Phalcon\Logger\Formatter\Firelogger::pickle PHP Метод

pickle() защищенный Метод

Reformats the passed log item. Recursive.
protected pickle ( mixed $var, integer $level ) : mixed
$var mixed
$level integer
Результат mixed
    protected function pickle($var, $level = 0)
    {
        if (is_bool($var) || is_null($var) || is_int($var) || is_float($var)) {
            return $var;
        }
        if (is_string($var)) {
            // intentionally @
            return @iconv('UTF-16', 'UTF-8//IGNORE', iconv($this->encoding, 'UTF-16//IGNORE', $var));
        }
        if (is_array($var)) {
            static $marker;
            if ($marker === null) {
                $marker = uniqid("", true);
            }
            // detects recursions
            if (isset($var[$marker])) {
                return '*RECURSION*';
            }
            if ($this->maxPickleDepth && $level >= $this->maxPickleDepth) {
                return '...';
            }
            $var[$marker] = true;
            $res = [];
            foreach ($var as $k => &$v) {
                if ($k !== $marker) {
                    $res[$this->pickle($k)] = $this->pickle($v, $level + 1);
                }
            }
            unset($var[$marker]);
            return $res;
        }
        if (is_object($var)) {
            $arr = (array) $var;
            $arr['__class##'] = get_class($var);
            static $list = [];
            // detects recursions
            if (in_array($var, $list, true)) {
                return '*RECURSION*';
            }
            if ($level < $this->maxPickleDepth || !$this->maxPickleDepth) {
                $list[] = $var;
                $res = [];
                foreach ($arr as $k => &$v) {
                    if ($k[0] === "") {
                        $k = substr($k, strrpos($k, "") + 1);
                    }
                    $res[$this->pickle($k)] = $this->pickle($v, $level + 1);
                }
                array_pop($list);
                return $res;
            }
            return '...';
        }
        if (is_resource($var)) {
            return '*' . get_resource_type($var) . ' resource*';
        }
        return '*unknown type*';
    }