科技知识动态:$this->$propertyName = $value,$this->propertyName = $value的区别?

导读 跟大家讲解下有关$this->$propertyName = $value,$this->propertyName = $value的区别?,相信小伙伴们对这个话题应该也很关注吧,现在

跟大家讲解下有关$this->$propertyName = $value,$this->propertyName = $value的区别?,相信小伙伴们对这个话题应该也很关注吧,现在就为小伙伴们说说$this->$propertyName = $value,$this->propertyName = $value的区别?,小编也收集到了有关$this->$propertyName = $value,$this->propertyName = $value的区别?的相关资料,希望大家看到了会喜欢。

在通过__set($propertyName,$value)设置private成员属性时,用$this->$propertyName = $value的写法才可以进行private变量值的修改,采用$this->propertyName = $value的写法则不能进行变量值的修改。

完整代码:

class BasePerson{

private $name; private $age; private $average; function __construct(){ $num_args = func_num_args(); if($num_args == 1){ $this->name = func_get_arg(0); } elseif($num_args == 2){ $this->name = func_get_arg(0); $this->age = func_get_arg(1); } elseif($num_args == 3){ $this->name = func_get_arg(0); $this->age = func_get_arg(1); $this->average = func_get_arg(2); } } private function __set($propertyName,$propertyValue){ echo"BasePerson __set()"; if($propertyName =="name"){ if($propertyValue =="zhangsan"|| $propertyValue =="wangwu"){ $this->$propertyName = $propertyValue; } } elseif($propertyName=="age"){ if($propertyValue >150 || $propertyValue $propertyName = $propertyValue; } function __toString(){ return"name:".($this->name)."age:".($this->age)."average".($this->average); }

}

回复内容:

在通过__set($propertyName,$value)设置private成员属性时,用$this->$propertyName = $value的写法才可以进行private变量值的修改,采用$this->propertyName = $value的写法则不能进行变量值的修改。

完整代码:

class BasePerson{

private $name; private $age; private $average; function __construct(){ $num_args = func_num_args(); if($num_args == 1){ $this->name = func_get_arg(0); } elseif($num_args == 2){ $this->name = func_get_arg(0); $this->age = func_get_arg(1); } elseif($num_args == 3){ $this->name = func_get_arg(0); $this->age = func_get_arg(1); $this->average = func_get_arg(2); } } private function __set($propertyName,$propertyValue){ echo"BasePerson __set()"; if($propertyName =="name"){ if($propertyValue =="zhangsan"|| $propertyValue =="wangwu"){ $this->$propertyName = $propertyValue; } } elseif($propertyName=="age"){ if($propertyValue >150 || $propertyValue $propertyName = $propertyValue; } function __toString(){ return"name:".($this->name)."age:".($this->age)."average".($this->average); }

}

$name = 'test';$$name = '123';var_dump($test); //输出123//希望你能理解//同理$this->$proertyName //需要看$proertyName的值, 是设置$proertyName的值这个属性$proertyName = 'age';$this->$proertyName = '12';var_dump($this->age); //输出12$this->proertyName //设置的是proertyName这个属性

楼主,$this->$propertyName = $value 这样的赋值是$this实例中变量为$propertyName变量的值,此处的$propertyName仍然是个变量,而$this->propertyName就是$this的属性了;

前者的情况是这样的,例如$propertyName = 'enable';那么$this->$propertyName 就等同与 $this->enable;

来源:php中文网

免责声明:本文由用户上传,如有侵权请联系删除!