Ich möchte eine einfache Form der Dependency Injection nach der folgenden Idee realiseren.
Ich habe unterschiedliche Klassen Car, Ship, Bobby und Plane.
Ich habe ein Array in dem die Abhängigkeiten von Klassen zueinander gespeichert sind.
Nun sollen diese Klassen der entsprechenden Reihenfolge her aufgerufen werden und Klassen, die benötigt werden, sollen über ein Array in die aktuelle Klasse injiziert werden.
Nun habe ich das Gefühl, dass ich ein Henne / Ei Problem geschaffen habe, da ich nicht darauf komme, wie ich eine Klasse instanziieren kann und diese dann als Klasse für eine andere Klasse weitergebe.
Ich habe bereits den folgenden Code vorbereitet und vielleicht hat jemand eine Idee.
P.S. Die Klassen Plane, Ship, Car und Bobby sind identisch aufgebaut.
index.php
Car.php
Ship.php
Plane.php
Bobby.php
Ich habe unterschiedliche Klassen Car, Ship, Bobby und Plane.
Ich habe ein Array in dem die Abhängigkeiten von Klassen zueinander gespeichert sind.
Nun sollen diese Klassen der entsprechenden Reihenfolge her aufgerufen werden und Klassen, die benötigt werden, sollen über ein Array in die aktuelle Klasse injiziert werden.
Nun habe ich das Gefühl, dass ich ein Henne / Ei Problem geschaffen habe, da ich nicht darauf komme, wie ich eine Klasse instanziieren kann und diese dann als Klasse für eine andere Klasse weitergebe.
Ich habe bereits den folgenden Code vorbereitet und vielleicht hat jemand eine Idee.
P.S. Die Klassen Plane, Ship, Car und Bobby sind identisch aufgebaut.
index.php
Code:
<pre>
<?php
require_once('Car.php');
require_once('Ship.php');
require_once('Plane.php');
require_once('Bobby.php');
// Abhängigkeiten
// Bobby: keine Abhängigkeit
// Ship: keine Abhängigkeit
// Plane: hängt ab von Bobby
// Car: hängt ab von Plane und Ship
// Klassen-Aufrufabfolge: Bobby -> Ship -> Plane -> Car
function dependencies($d){
$array = array();
foreach($d as $key=>$val){
$array[$val] = '';
}
return $array;
}
function classcall($class,$dep){
$instance = new $class($dep);
return $instance->call();
}
$classes = array('Bobby'=>array(),'Ship'=>array(),'Plane'=>array('Bobby'),'Car'=>array('Plane','Ship'));
$c = '';
foreach($classes as $class=>$dependencies){
$dep = dependencies($dependencies);
$c .= classcall($class,$dep);
}
print_r($c);
?>
Car.php
Code:
<?php
class Car{
protected $name = '';
function __construct($array=array()){
echo "<hr>";
echo "CAR<br>";
print_r($array);
}
public function call(){
return "CAR";
}
public function setName($name){
$this->name = $name;
}
public function getName(){
return $this->name;
}
}
?>
Ship.php
Code:
<?php
class Ship{
protected $name = '';
function __construct($array=array()){
echo "<hr>";
echo "SHIP<br>";
print_r($array);
}
public function call(){
return "SHIP";
}
public function setName($name){
$this->name = $name;
}
public function getName(){
return $this->name;
}
}
?>
Plane.php
Code:
<?php
class Plane{
protected $name = '';
function __construct($array=array()){
echo "<hr>";
echo "PLANE<br>";
print_r($array);
}
public function call(){
return "PLANE";
}
public function setName($name){
$this->name = $name;
}
public function getName(){
return $this->name;
}
}
?>
Bobby.php
Code:
<?php
class Bobby{
protected $name = '';
function __construct($array=array()){
echo "<hr>";
echo "BOBBY<br>";
print_r($array);
}
public function call(){
return "BOBBY";
}
public function setName($name){
$this->name = $name;
}
public function getName(){
return $this->name;
}
}
?>