我试图创建一些类,我想使用这种语法:
$my = new My();
$my->field()->test('test');
我知道如何做$my->test('test')
,这很容易 - 但我不知道如何添加field()
属性以便更轻松地理解我的班级代码。
我可以猜到它类似于一个类进入另一个类 - 扩展 - 但我不确定如此,所以如果你知道如何做类似的事情。
我确切地说,这只是为了更好地理解我的班级。我的意思是目的是对这个My
类中的函数进行分类。
谢谢:)
答案 0 :(得分:2)
如果你稍微打破你的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();
答案 1 :(得分:0)
为了对方法执行操作,方法需要返回一个对象。
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");