arongsoft 发表于 2017-3-27 10:41:17

php中的方法链

在如zend,cakephp等不少框架中,会看到如下面的类的调用方式,如
$obj->foo()->bar()->anotherMethod();
这个其实是利用了PHP中的方法链的调用方法,下面看个例子就明白了:
class Person   
{   
    private $name;   
    private $age;   
      
    public function setName($Name)   
    {   
      $this->name = $Name;   
    }   
      
    public function setAge($Age)   
    {   
      $this->age = $Age;   
    }   
      
    public function findMe()   
    {   
echo "My name is ".$this->name." and I am ".$this->age. " years old.";   
    }   
}

正常方式的调用:
$myself = new Person();   
$myself->setName('Arvind Bhardwaj');   
$myself->setAge('22');   
$myself->findMe();

用方法链的话:
class Person   
{   
    private $name;   
    private $age;   
      
    public function setName($Name)   
    {   
      $this->name = $Name;   
return $this;//Returns object of 'this' i.e Person class   
    }   
      
    public function setAge($Age)   
    {   
      $this->age = $Age;   
return $this;//Again returns object of 'this' i.e Person class   
    }   
      
    public function findMe()   
    {   
echo "My name is ".$this->name." and I am ".$this->age. " years old.";   
    }   
}
调用时就可以:
$myself = new Person();   
$myself->setName('Arvind Bhardwaj')->setAge('22')->findMe();
页: [1]
查看完整版本: php中的方法链