我尝试在一个对象上调用多个函数。但我认为我的语法失败了。你能纠正我吗?
$objMetaDaten->setStrTitle('test')
->setStrBeschreibung('test')
->setStrUeberschrift('test')
->setStrCanonical('test')
->setStrRobots(MetaDaten::INDEX);
答案 0 :(得分:7)
你需要的是一个叫做流利的setter的东西,它会在调用对象上的setter之后返回对象,而不是传统的void setter,如下所示
Class A{
private $name;
private $id;
public function setName($name) {
$this–>name = $name;
return $this;
}
public function getName() {
return $this–>name;
}
public function setId($id) {
$this–>id = $id;
return $this;
}
public function getId() {
return $this–>id;
}
}
所以你可以说
$test = new A();
$test->setId(1)->setName('Fredrick');
答案 1 :(得分:-2)
我认为你看起来像这样,这是一个非常基本的方法。
class Test{
function test(){
return 'Hi!';
}
}
class Test2{
function test_2(){
return new Test();
}
}
class Test3{
function test_3(){
return new Test2();
}
}
$obj = new Test3();
echo $obj->test_3()->test_2()->test();
或者,您可以在一个类中执行此操作,例如 -
class Test{
private $num;
function test(){
return 'Hi! your number is: '.$this->num;
}
function test_2($mul){
$this->num *= $mul;
return $this;
}
function test_3($add){
$this->num = $add;
return $this;
}
}
$obj = new Test();
echo $obj->test_3(50)->test_2(2)->test();