这是一个简单的例子:
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 作为参数传递给另一个类的方法?或者总是是紧密耦合?我可以使用工厂模式代替静态方法调用来构建另一个类似的示例。
答案 0 :(得分:1)
这取决于Class_A
和Class_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上找到。