在对象上调用多个方法?

时间:2016-10-16 11:58:31

标签: php

我尝试在一个对象上调用多个函数。但我认为我的语法失败了。你能纠正我吗?

    $objMetaDaten->setStrTitle('test')
        ->setStrBeschreibung('test')
        ->setStrUeberschrift('test')
        ->setStrCanonical('test')
        ->setStrRobots(MetaDaten::INDEX);

2 个答案:

答案 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();