Cita:
Iniciado por fernandozunni Mirándolo bien, le faltó pasarle el objeto de la clase show como argumento en el constructor de la clase get para que sea una inyección.
Código PHP:
Ver originalclass show{
function showme() {
echo 'Hello World';
}
}
class get{
private $display;
function __construct($show){
$this->display = $show;
}
function showmeHelloWorld() {
return $this->display->showme();
}
}
$show = new show();
$showTime = new get($show);
$showTime->showmeHelloWorld();
Esto si sería una inyección, corriganme sino.
Saludos.
http://www.hasheado.com/dependecy-injection-en-php.html Que tal
fernandozunni, si bien ya entramos en el terreno de lo subjetivo, para mi sigue sin ser DI(es aggregation), debería de haber un injector(assembler), seria algo asi:
Código PHP:
Ver originalclass Show
{
public function showme()
{
return 'Hello World';
}
}
class Get
{
private $display;
public function __construct(Show $show)
{
$this->display = $show;
}
public function showmeHelloWorld()
{
return $this->display->showme();
}
}
class GetFactory
{
public static function buildGet()
{
return new Get(new Show());
}
}
$get = GetFactory::buildGet();
echo $get->showmeHelloWorld();
mirando por arriba la referencia que dejaste, no se que tan bien este, habla de property injection ?, entiendo que los 3 tipos de injection son:
Constructor Injection(nuestro caso)
Setter Injection
Interface Injection
te dejo la referencia al
articulo original, de M. Fowler.
Saludos.