Tema: Clases
Ver Mensaje Individual
  #12 (permalink)  
Antiguo 20/01/2011, 08:25
Avatar de masterpuppet
masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 4 meses
Puntos: 845
Respuesta: Clases

Cita:
Iniciado por fernandozunni Ver Mensaje
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 original
  1. class show{    
  2.     function showme() {
  3.         echo 'Hello World';
  4.     }
  5. }  
  6.  
  7. class get{
  8.  
  9. private $display;
  10.  
  11.     function __construct($show){
  12.         $this->display = $show;
  13.     }
  14.     function showmeHelloWorld() {
  15.         return $this->display->showme();
  16.     }
  17. }
  18.  
  19. $show = new show();
  20. $showTime = new get($show);
  21. $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 original
  1. class Show
  2. {    
  3.    public function showme()
  4.    {
  5.       return 'Hello World';
  6.    }  
  7. }  
  8.  
  9. class Get
  10. {
  11.    private $display;
  12.  
  13.    public function __construct(Show $show)
  14.    {
  15.       $this->display = $show;
  16.    }
  17.  
  18.    public function showmeHelloWorld()
  19.    {
  20.       return $this->display->showme();
  21.    }
  22. }
  23.  
  24. class GetFactory
  25. {
  26.    public static function buildGet()
  27.    {
  28.       return new Get(new Show());
  29.    }
  30. }
  31.  
  32. $get = GetFactory::buildGet();
  33. 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.
__________________
http://es.phptherightway.com/
thats us riders :)

Última edición por masterpuppet; 20/01/2011 a las 09:00 Razón: Ajuste codigo