您好,欢迎访问一九零五行业门户网

$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;
其它类似信息

推荐信息