定义php类

iff*_*iff 1 php oop

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

如果我有一个PHP类

class ClassName {
    function f1() {
        //...
    }
    function f2() {
        //...
    }
}
$cn = new ClassName();
Run Code Online (Sandbox Code Playgroud)

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

$cn->f1()->f2();
Run Code Online (Sandbox Code Playgroud)

代替

$cn->f1();
$cn->f2();
Run Code Online (Sandbox Code Playgroud)

谢谢.

ter*_*ško 6

class ClassName {
    public function f1() {
        //...
        return $this;
    }
    public function f2() {
        //...
        return $this;
    }
    // and for a static
    public static function sf1() {
        // ...
        return self;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,方法链接是一个坏主意.这使得难以阅读代码.

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

此外,如果你要"但是jquery做到了"推理,我很遗憾地通知你,但是 - 通常情况下 - 这表明某些事情是不好的做法.

  • 我认为方法链接可能是一个好主意,因为它使某些代码更容易阅读. (2认同)
  • @erisco,在一些非常具体的情况下,如果你坚持同样的实例 - 是的,你是对的.但一般的经验法则是:*"避免它"*. (2认同)