Вот пример с 3 классами (A, B, C).
- Класс A зависит от классов B и C.
- Класс B зависит от класса A.
- Класс C не имеет зависимостей.
Код: Выделить всё
class A {
function __construct() {}
public function init($dependencies) {
foreach($dependencies as $name => $dependency) {
$this->{$name} = $dependency;
}
}
public function foo() {
if($this->B->bar()) {
return 'A via B is true';
}
if($this->C->bar()) {
return 'C true';
}
return false;
}
public function bar() {
return true;
}
}
class B {
function __construct() {}
public function init($dependencies) {
foreach($dependencies as $name => $dependency) {
$this->{$name} = $dependency;
}
}
public function bar() {
if($this->A->bar()) {
return true;
}
return false;
}
}
class C {
function __construct() {}
public function bar() {
return true;
}
}
$A = new A();
$B = new B();
$C = new C();
$A->init(array(
'B' => $B,
'C' => $C
));
$B->init(array(
'A' => $A
));
var_dump($A->foo());
Подробнее здесь: https://stackoverflow.com/questions/790 ... d-practice