下面是一个简单的例子:
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作为参数传递给另一个类的方法?还是总是将是紧耦合?我可以提出另一个类似的例子,使用工厂模式代替静态方法调用。
这取决于Class_A
和Class_B
的确切行为,但一般来说,定义一个由Class_A
实现的接口和类型提示可能会更好。Class_B
(例如getProperty()
)需要的Class_A
的方法应该出现在你的界面中。然后,如果您想在以后用另一个类切换Class_A
,它所要做的就是实现相同的接口。
同样,这取决于所讨论的类的行为,但是如果有另一个Class_C
也使用了Class_B
的静态方法,那么您可能需要考虑让Class_A
和Class_C
扩展Class_B
。更多信息可以在php对象继承页面找到