谁一开始就是大神?

对象和数组为什么都可以使用[2.0]

$infoModel = InfoModel::findOne(1);
上面就是查找id为1的数据,我打印过$infoModel,他是个对象
可是 输出以下2句都可以成功打印正确数据:

echo $infoModel -> name; //这个可以理解   他是对象可以->
echo $infoModel['name']; //这个不理解  他不是数组啊

以下是打印的$infoModel:

app\models\InfoModel Object
(
    [_attributes:yii\db\BaseActiveRecord:private] => Array
        (
            [id] => 1
            [name] => 我问问2
            [age] => 32
        )

    [_oldAttributes:yii\db\BaseActiveRecord:private] => Array
        (
            [id] => 1
            [name] => 我问问2
            [age] => 32
        )

    [_related:yii\db\BaseActiveRecord:private] => Array
        (
        )

    [_errors:yii\base\Model:private] => 
    [_validators:yii\base\Model:private] => 
    [_scenario:yii\base\Model:private] => default
    [_events:yii\base\Component:private] => Array
        (
        )

    [_behaviors:yii\base\Component:private] => Array
        (
        )

)

还有顺便问下<?php echo $form -> field($infoModel,’name’)->textInput(array(‘value’ => $infoModel[‘name’])); ?>
这里的field的第一个参数$infoModel是不是一定是模型对象,我试着在控制器把$infoModel转成数组就报错了???

因为 AR 是 yii\base\model 的后代,而 yii\base\Model 实现了 PHP 预定义的接口 ArrayAccess, 正是这个接口让我们能够像使用关系数组一样访问对象中的属性。
用ArrayHelper::getValue($infoModel,’name’),也是可以打印的
这个你就需要研究研究findOne(),然后研究研究one(),然后如下
WechatIMG3.jpeg

赞(0) 打赏
未经允许不得转载:菜鸟之家 » 对象和数组为什么都可以使用[2.0]

评论 抢沙发

登录

找回密码

注册