我正在尝试关注脚本,但它似乎没有获取新的值处理bt __set
我正在尝试通读this文章来掌握OOP,直到magento。是否缺少某些东西?
class MyClass{
public $name = "Mike";
private function __setProperty($newval){
$this->name = $newval;
}
public function __getProperty(){
return $this->name;
}
}
$obj = new MyClass;
//var_dump($obj);
echo $obj->name;
$obj->getProperty("Angela");
echo $obj->getProperty();
答案 0 :(得分:4)
getProperty()
方法代替setProperty()
。__
)开头,但您调用该方法(即代替$obj->setProperty()
您应使用$obj->__setProperty()
或更改方法名称)setProperty()
方法为private
,这意味着无法在课程外访问它。如果您希望在对象级别访问该方法,则该方法必须为public
。将您的代码更改为:
class MyClass{
public $name = "Mike";
public function setProperty($newval){
$this->name = $newval;
}
public function getProperty(){
return $this->name;
}
}
$obj = new MyClass;
//var_dump($obj);
echo $obj->name;
$obj->setProperty("Angela");
echo $obj->getProperty();
这将输出:
MikeAngela
答案 1 :(得分:0)
此处错误$obj->getProperty("Angela");
您需要使用setProperty
echo $obj->name;
$obj->setProperty("Angela");
echo $obj->getProperty();
,您的功能为public
而不是private
我认为你想要__set,这里是PHP docs的例子:
public function __set($name, $value)
{
$this->data[$name] = $value;
}