Ver Mensaje Individual
  #27 (permalink)  
Antiguo 11/02/2013, 19:12
Avatar de dashtrash
dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 8 meses
Puntos: 270
Respuesta: Nueva versión de PHP 5.4

Bueno, por dejarlo ya, una cosa curiosa, que además me afecta a mí, como programador que no hace lo que debe hacer .

Qué ocurre si dos traits declaran la misma variable como privada?
Código PHP:
Ver original
  1. trait uno {
  2.     private $h;
  3.     function one(){$this->h=1;}
  4.     }
  5. trait dos {
  6.     private $h;
  7.     function two(){$this->h=4;}
  8.     }
  9.  
  10. class prueba
  11. {
  12.     use uno,dos;
  13. }
PHP, cuando interpreta este código, da un error, al interpretar el script.
Código PHP:
Ver original
  1. <b>Strict Standards</b>:  uno and dos define the same property ($h) in the composition of prueba. This might be incompatible, to improve maintainability consider using accessor methods in traits instead. Class was composed in <b>[...][...]</b> on line <b>11</b>

Ahora bien, en php, uno no está obligado a declarar las variables miembros de la clase.Hay indeseables que tienen esta costumbre.Más concretamente, yo
Si no declaramos la variable:
Código PHP:
Ver original
  1. trait uno {
  2.     function one(){$this->h=1;}
  3.     }
  4. trait dos {
  5.     function two(){$this->h=4;}
  6.     }

Voilá, PHP deja de advertirnos...
Alguen huele a unas cuantas horas de depuración de código?