Base::stringify PHP Method

stringify() public method

Convert PHP expression/value to compressed exportable string
public stringify ( $arg, array $stack = NULL ) : string
$arg mixed
$stack array array
return string
    function stringify($arg, array $stack = NULL)
    {
        if ($stack) {
            foreach ($stack as $node) {
                if ($arg === $node) {
                    return '*RECURSION*';
                }
            }
        } else {
            $stack = [];
        }
        switch (gettype($arg)) {
            case 'object':
                $str = '';
                foreach (get_object_vars($arg) as $key => $val) {
                    $str .= ($str ? ',' : '') . var_export($key, TRUE) . '=>' . $this->stringify($val, array_merge($stack, [$arg]));
                }
                return get_class($arg) . '::__set_state([' . $str . '])';
            case 'array':
                $str = '';
                $num = isset($arg[0]) && ctype_digit(implode('', array_keys($arg)));
                foreach ($arg as $key => $val) {
                    $str .= ($str ? ',' : '') . ($num ? '' : var_export($key, TRUE) . '=>') . $this->stringify($val, array_merge($stack, [$arg]));
                }
                return '[' . $str . ']';
            default:
                return var_export($arg, TRUE);
        }
    }

Usage Example

示例#1
0
文件: fal.php 项目: jackycgq/bzfshop
 /**
  * compute file cache name
  * @param $file
  * @return string
  */
 protected function getCacheHash($file)
 {
     if (is_null($this->cacheHash)) {
         $fs_class = explode('\\', get_class($this->fs));
         $this->cacheHash = $this->f3->hash($this->f3->stringify($file)) . '.' . strtolower(array_pop($fs_class));
     }
     return $this->cacheHash;
 }