0

我正在尝试创建一些类,我想使用这种语法:

$my = new My();
$my->field()->test('test');

我知道如何做 a $my->test('test'),这很容易 - 但我不知道如何添加field()属性以便更容易理解我的代码中的类。

我可以猜想它就像一个类到另一个类 - 扩展 - 但我不确定,所以如果你知道如何做类似的事情。

我准确地说,这只是为了更好地理解我的课程。我的意思是目的是对这个My类中的函数进行分类。

谢谢 :)

4

2 回答 2

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();
于 2012-07-03T09:50:23.187 回答
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");
于 2012-07-03T14:46:30.523 回答