将$ this传递给静态方法紧耦合?

时间:2011-12-18 21:27:59

标签: php loose-coupling

这是一个简单的例子:

class Class_A {   
    protected $_property;

    public function method()
    {
        Class_B::method($this);
    }

    public function getProperty()
    {
        return $this->_property;
    }
}

class Class_B {
    public static function method(Class_A $classA)
    {
        $classA->getProperty();
    }
}

$classA = new ClassA();
$classA->method();

是否可以将 $ this 作为参数传递给另一个类的方法?或者总是是紧密耦合?我可以使用工厂模式代替静态方法调用来构建另一个类似的示例。

2 个答案:

答案 0 :(得分:1)

这取决于Class_AClass_B的确切行为,但一般来说,定义一个由Class_A实现并为其键入提示的接口可能会更好。 Class_A所需的Class_B方法(例如getProperty())应出现在您的界面中。然后,如果您想在以后将Class_A与另一个类切换,那么它所要做的只是实现相同的接口。

答案 1 :(得分:0)

然而,它又取决于所讨论的类的行为,但如果还有另一个Class_C例如也使用了Class_B的静态方法,那么您可能需要考虑{{1 }和Class_A扩展Class_C。更多信息可以在php object inheritance page上找到。