美文网首页
$this->$和$this->的注意点

$this->$和$this->的注意点

作者: 三米板 | 来源:发表于2020-04-09 10:23 被阅读0次

最近有些小伙伴问我出现的一个问题,在构造中对成员进行赋值的时候,出现赋不上值的情况,我看了一下他们的代码,额,看来是没理解一个概念。
即$this->$name
和$this->name有什么区别呢?

我们看一下__set魔术方法的一般写法:

public function __set($name, $value)
{
     $this-> $name = $value ; 
}

我看了一下小伙伴的构造中代码,如下:

protected $modelName = '' ;
public function __construct($modelName)
    {
        $this->$modelName = $modelName ; 
    }

这明显是有问题的

我们实例化的时候,假如我们调用:

$mode = new Model('Grade');

'Grade'会账值到 构造形参$modelName
然后我们
$this->$modelName 会变为
$this->Grade
这样肯定是无法赋值成功的。
所以要改为

protected $modelName = '' ;
public function __construct($modelName)
    {
        $this->modelName = $modelName ; 
    }

简单总结:
$this->$var = $value;
在$this->后面出现变量$var的时候,会把变量先转化成它真正的值再去执行
=$value的操作。
所以我们在构造为成员赋值时,一定不能在$this->后面的成员变量前边加$号

相关文章

网友评论

      本文标题:$this->$和$this->的注意点

      本文链接:https://www.haomeiwen.com/subject/coeqmhtx.html