yii\helpers\BaseJson::processData PHP Метод

processData() защищенный статический Метод

Pre-processes the data before sending it to json_encode().
protected static processData ( mixed $data, array &$expressions, string $expPrefix ) : mixed
$data mixed the data to be processed
$expressions array collection of JavaScript expressions
$expPrefix string a prefix internally used to handle JS expressions
Результат mixed the processed data
    protected static function processData($data, &$expressions, $expPrefix)
    {
        if (is_object($data)) {
            if ($data instanceof JsExpression) {
                $token = "!{[{$expPrefix}=" . count($expressions) . ']}!';
                $expressions['"' . $token . '"'] = $data->expression;
                return $token;
            } elseif ($data instanceof \JsonSerializable) {
                return static::processData($data->jsonSerialize(), $expressions, $expPrefix);
            } elseif ($data instanceof Arrayable) {
                $data = $data->toArray();
            } elseif ($data instanceof \SimpleXMLElement) {
                $data = (array) $data;
            } else {
                $result = [];
                foreach ($data as $name => $value) {
                    $result[$name] = $value;
                }
                $data = $result;
            }
            if ($data === []) {
                return new \stdClass();
            }
        }
        if (is_array($data)) {
            foreach ($data as $key => $value) {
                if (is_array($value) || is_object($value)) {
                    $data[$key] = static::processData($value, $expressions, $expPrefix);
                }
            }
        }
        return $data;
    }

Usage Example

Пример #1
0
 /**
  * @param mixed $data
  * @param array $expressions
  * @param string $expPrefix
  * @return mixed
  */
 protected static function processData($data, &$expressions, $expPrefix)
 {
     $processed = parent::processData($data, $expressions, $expPrefix);
     return self::reformatKeys($processed);
 }