You are here

public function StringUtil::stringify in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php \Prophecy\Util\StringUtil::stringify()

Stringifies any provided value.

Parameters

mixed $value:

boolean $exportObject:

Return value

string

File

vendor/phpspec/prophecy/src/Prophecy/Util/StringUtil.php, line 31

Class

StringUtil
String utility.

Namespace

Prophecy\Util

Code

public function stringify($value, $exportObject = true) {
  if (is_array($value)) {
    if (range(0, count($value) - 1) === array_keys($value)) {
      return '[' . implode(', ', array_map(array(
        $this,
        __FUNCTION__,
      ), $value)) . ']';
    }
    $stringify = array(
      $this,
      __FUNCTION__,
    );
    return '[' . implode(', ', array_map(function ($item, $key) use ($stringify) {
      return (is_integer($key) ? $key : '"' . $key . '"') . ' => ' . call_user_func($stringify, $item);
    }, $value, array_keys($value))) . ']';
  }
  if (is_resource($value)) {
    return get_resource_type($value) . ':' . $value;
  }
  if (is_object($value)) {
    return $exportObject ? ExportUtil::export($value) : sprintf('%s:%s', get_class($value), spl_object_hash($value));
  }
  if (true === $value || false === $value) {
    return $value ? 'true' : 'false';
  }
  if (is_string($value)) {
    $str = sprintf('"%s"', str_replace("\n", '\\n', $value));
    if (50 <= strlen($str)) {
      return substr($str, 0, 50) . '"...';
    }
    return $str;
  }
  if (null === $value) {
    return 'null';
  }
  return (string) $value;
}