Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/09/2012, 09:19
Avatar de carlos_belisario
carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Interfaces de objetos, duda sobre argumentos

Código PHP:
Ver original
  1. interface b extends a // la interfaz al igual que una clase comun se puede extender
  2. {
  3.     public function baz(Baz $baz);
  4. }

estas declarando en la interface que el método baz espera como argumento un objeto del tipo Baz (imagino que tendras declarada una clase Baz), cuando haces la declaración en la clase

Código PHP:
Ver original
  1. // Ésto sí funcionará
  2. class c implements b
  3. {
  4.     public function foo()
  5.     {
  6.     }
  7.  
  8.     public function baz(Baz $baz)
  9.     {
  10.     }
  11. }
  12.  
  13. // Ésto no funcionará y resultará en un error fatal (es lo que dice el manual que estoy leyendo)
  14. class d implements b
  15. {
  16.     public function foo()
  17.     {
  18.     }
  19.  
  20.     public function baz(Foo $foo)
  21.     {
  22.     }
  23. }

la primera funciona porque esta cumpliendo con lo establecido en la interface, en la declaración el método espera su objeto del tipo Baz, en la segunda rompes el contrato establecido, ya que en no estas haciendo la implementación de lo indicado en la interface

Código PHP:
Ver original
  1. public function baz(Foo $foo)
  2. // es diferente de
  3. public function baz(Baz $baz);

saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way