1

可能重复:
PHP 方法链接混淆

如果我有一个 php 类

class ClassName {
    function f1() {
        //...
    }
    function f2() {
        //...
    }
}
$cn = new ClassName();

如何定义我可以在样式中使用函数的类

$cn->f1()->f2();

代替

$cn->f1();
$cn->f2();

谢谢你。

4

2 回答 2

6
class ClassName {
    public function f1() {
        //...
        return $this;
    }
    public function f2() {
        //...
        return $this;
    }
    // and for a static
    public static function sf1() {
        // ...
        return self;
    }
}

但是,方法链接是个坏主意。它使代码难以阅读。

如果您要返回同一对象的实例,则不会直接有害。但是,当您开始编写类似的代码时$locator->get('MySQL')->connection()->query('SELECT 1');,那些坚持维护您的代码的人可能会找到您的住所并惩罚您。

此外,如果您是按照“但是 jquery 做到了”的推理,我很遗憾地通知您,但这 - 通常情况下 - 表明某事是一种不好的做法。

于 2012-08-12T06:46:42.200 回答
4

要在函数中进行链接,您需要从函数返回当前对象

return $this;

在你的函数中添加这个f1()..

class ClassName {
    function f1() {
        //...
        return $this;
    }
    function f2() {
        //...
        return $this;
    }
}
于 2012-08-12T06:46:20.003 回答