在如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();
相关文章
- php把文件设置为插件的技巧方法
- php单例模式在数据库连接中的使用
- php应用数据库连接中的单例模式
- 总结ASP.NET MVC Web Application中将数据显示到View中的几种方式
- node.js中的fs.futimesSync方法使用说明
- 替换python字典中的key值方法
- php文件下载处理方法分析
- php更新修改excel中的内容例子
- php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
- 实现Square类,让其继承自Rectangle类,并在Square类增添新属性和方法,在2的基础上,在Square类中重写Rectangle类中的初始化和打印方法