我在运行此脚本时遇到此问题:
致命错误:在第16行的/opt/lampp/htdocs/test/index.php中的非对象上调用成员函数setAge()
<?php
class Student {
public function setName($name,$value){
$this->$name=$value;
}
public function setAge($name,$value){
$this->$name=$value;
}
}
$Student1=new Student;
$Student1->setName('name', 'sanjeewani')
->setAge('age', '26');
var_dump($Student1);
?>
我该如何解决这个问题?
答案 0 :(得分:1)
你不能链接这样的方法,你需要它们来返回对象才能做到这一点。否则你必须分别调用每个方法。
public function setName($name,$value){
$this->$name=$value;
return $this;
}
public function setAge($name,$value){
$this->$name=$value;
return $this;
}
答案 1 :(得分:0)
对于“流畅的界面”(在你正在做的时候连续调用几个方法),你的方法需要return $this
。因为你在前者的返回值上调用下一个方法。
如果您不这样做,则无法使用流畅的界面风格。只需进行常规方法调用:
$Student1->setName('name', 'sanjeewani')
$Student1->setAge('age', '26');
另请注意,您的方法毫无意义。它应该是setAge(26)
,而不是setAge('age', 26)
。摆脱冗余。
答案 2 :(得分:0)
我这样做是为了动态设置对象属性。任何学生都有不同的功能。然后我可以设置这个。当我为任何学生打印学生对象时,我想为不同的学生看到不同的功能。我使用它的原因。(只是忽略函数名称)
$Student1->setName('name', 'sanjeewani')
$Student1->setAge('age', '26');