0 关注者

类 yii\db\JsonExpression

继承yii\db\JsonExpression
实现JsonSerializable, yii\db\ExpressionInterface
自版本起可用2.0.14
源代码 https://github.com/yiisoft/yii2/blob/master/framework/db/JsonExpression.php

类 JsonExpression 表示应编码为 JSON 的数据。

例如

new JsonExpression(['a' => 1, 'b' => 2]); // will be encoded to '{"a": 1, "b": 2}'

受保护属性

隐藏继承的属性

属性 类型 描述 由谁定义

公共方法

隐藏继承的方法

方法 描述 由谁定义
__construct() JsonExpression 构造函数。 yii\db\JsonExpression
getType() yii\db\JsonExpression
getValue() yii\db\JsonExpression
jsonSerialize() 指定应序列化为 JSON 的数据 yii\db\JsonExpression

常量

隐藏继承的常量

常量 描述 由谁定义
TYPE_JSON 'json' yii\db\JsonExpression
TYPE_JSONB 'jsonb' yii\db\JsonExpression

属性详细信息

隐藏继承的属性

$type 受保护属性

JSON 类型,表达式应转换为该类型。默认为 null,表示不会执行显式转换。此属性仅在支持不同 JSON 类型的 DBMS 中出现。例如,PostgreSQL 有 jsonjsonb 类型。

protected string|null $type null
$value 受保护属性

要编码为 JSON 的值。该值必须与 [\yii\helpers\Json::encode()|Json::encode()]] 输入要求兼容。

protected mixed $value null

方法详细信息

隐藏继承的方法

__construct() 公共方法

JsonExpression 构造函数。

另请参阅 $type.

public void __construct ( $value, $type null )
$value mixed

要编码为 JSON 的值。该值必须与 [\yii\helpers\Json::encode()|Json::encode()]] 要求兼容。

$type string|null

JSON 类型。见 yii\db\JsonExpression::$type

                public function __construct($value, $type = null)
{
    if ($value instanceof self) {
        $value = $value->getValue();
    }
    $this->value = $value;
    $this->type = $type;
}

            
getType() 公共方法

另请参阅 $type.

public string|null getType ( )
返回 string|null

JSON 类型

                public function getType()
{
    return $this->type;
}

            
getValue() 公共方法

另请参阅 $value.

public mixed getValue ( )

                public function getValue()
{
    return $this->value;
}

            
jsonSerialize() 公共方法 (自版本 2.0.14.2 起可用)

指定应序列化为 JSON 的数据

public mixed jsonSerialize ( )
返回 mixed

可被 json_encode 序列化的数据,其值为除资源之外的任何类型。

抛出 yii\base\InvalidConfigException

当 JsonExpression 包含 QueryInterface 对象时

                #[\ReturnTypeWillChange]
public function jsonSerialize()
{
    $value = $this->getValue();
    if ($value instanceof QueryInterface) {
        throw new InvalidConfigException('The JsonExpression class can not be serialized to JSON when the value is a QueryInterface object');
    }
    return $value;
}