Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 对对象调用多个方法?_Php - Fatal编程技术网

Php 对对象调用多个方法?

Php 对对象调用多个方法?,php,Php,我尝试在一个对象上调用多个函数。但是我想我没有通过语法。请你纠正我好吗 $objMetaDaten->setStrTitle('test') ->setStrBeschreibung('test') ->setStrUeberschrift('test') ->setStrCanonical('test') ->setStrRobots(MetaDaten::INDEX); 我认为你看起来像这

我尝试在一个对象上调用多个函数。但是我想我没有通过语法。请你纠正我好吗

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

我认为你看起来像这样,这是一个非常基本的方法

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

您需要的是一种称为fluent setters的东西,它将在调用对象上的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');

要使其工作,每个方法都必须返回
$this
。看,method chaining.show您的错误消息如果
setStrTitle('test')
返回下一个类,我的意思是
(setStrBeschreibung('test'))
的对象,那么这将发生。