在函数内将函数创建到类中


Create a function inside a function into a class?

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

$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");