Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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_Oop_Class_Methods_Nested - Fatal编程技术网

如何在PHP中创建嵌套方法?

如何在PHP中创建嵌套方法?,php,oop,class,methods,nested,Php,Oop,Class,Methods,Nested,例如,我见过第三方应用程序具有如下功能: $db->select('columns')->from('table')->where('condition'); 这只是一个例子。如何创建这样的方法?在您的示例中,这些方法只是返回对象。因此,$db->select()返回一个对象,该对象包含一个方法from(),该方法返回一个对象,该对象包含一个方法where()要实现这一点,每个方法都应该返回$this,一个包含这些方法的类的实例 class MyClass { pub

例如,我见过第三方应用程序具有如下功能:

$db->select('columns')->from('table')->where('condition');

这只是一个例子。如何创建这样的方法?

在您的示例中,这些方法只是返回对象。因此,
$db->select()
返回一个对象,该对象包含一个方法
from()
,该方法返回一个对象,该对象包含一个方法
where()

要实现这一点,每个方法都应该返回
$this
,一个包含这些方法的类的实例

class MyClass {

   public function select($x){
      // do something
      return $this;
   }

   public function from($x){
      // do something
      return $this;
   }

   public function where($x){
      // do something
      return $this;
   }

}
在这些方法中,您通常会对对象的状态执行某种修改