我正在尝试创建一些类,我想使用以下语法:
$my = new My();
$my->field()->test('test');
我知道如何做一个$my->test('test')
,这很容易 - 但我不知道如何添加一个field()
属性来更容易理解我的代码中的类。
我可以猜到这就像一个类进入另一个类 - 扩展 - 但我不确定,所以如果你知道如何做类似的事情。
我精确地说,这只是为了更好地理解我的课堂。我的意思是目的是在这个My
类中对函数进行分类。
谢谢:)
如果你稍微分解一下你的php,你就会明白发生了什么。例如,让我们做这个:
$my->field()->test('test');
进入这个(为了澄清)。
$newObject = $my->field();
$newObject->test('test');
从这里您可以观察到方法 $my->field() 的返回实际上是一个带有另一个方法测试的对象,然后您可以调用它。它称为方法链接,有时很有用。
下面是一个测试用例:
class a{
public function My(){
return new b;
}
}
class b{
public function foo(){
echo 'hello bar';
}
}
$a = new a();
$a->My()->foo();
为了对方法执行操作,该方法需要返回一个对象。
class a {
public function b($c){
echo $c;
return $this;
}
}
将允许
$d = new a();
$d->b("foo")->b("bar");
$d->b("foo")->b("bar")->b("far")->b("tar");