定义php类

时间:2012-08-12 06:43:08

标签: php oop

  

可能重复:
  PHP Method chaining Confusion

如果我有一个php类

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

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

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

而不是

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

谢谢。

2 个答案:

答案 0 :(得分: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做了”推理,我很遗憾地通知你,但是 - 通常情况下 - 这表明事情是不好的做法。

答案 1 :(得分:4)

要在函数中链接返回当前对象所需的函数..

return $this;

在您的函数f1() ..

中添加此内容
class ClassName {
    function f1() {
        //...
        return $this;
    }
    function f2() {
        //...
        return $this;
    }
}