Cita:
Iniciado por GatorV Eso que indicas no es problema de tu clase, si no un problema de PHP, sí estas usando una versión anterior a 5.2.1, te puede dar error y deberías usar:
Código PHP:
Ver original$layout = $vista->layout; // Recuperamos el vector
$layout['url_contacto'] = 'url/contacto'; // Añadimos
$vista->layout = $layout; // Volvemos a guardar
Sí usas una versión más nueva a 5.2.1 ya no existe el bug y no veo porque no puedes usar directamente:
Saludos.
Hombre, segun lo he planteado yo,
$vista->layout = array();
Intenta acceder a la propiedad layout de la vista, como no existe, accede al metodo magico __set con parametros $key = 'layout' y $var = array() con lo que guarda en la propiedad $vista->vars el array() de la forma $vista->vars['layout'] = array()
¿ Que pasa cuando intentamos $vista->layout['foo'] = 'bar'; ?
Que se checkea si existe la propiedad layout y como no existe accede al metodo magico __set pero da un error pues ahora tenemos layout como nombre de la variable, 'foo' como indice y 'bar' como valor a guardar y el metodo __set solo tiene como parametros nombre de variable y valor. Y creo que por eso da error.
EDITADO:
Creo que quizas ya he encontrado la solucion.
Lo que voy a intentar hacer es guardar las variables en la $vista directamente como propiedades y luego para la carga de lo que son datos para la plantilla, lo que hare sera cargar solamente las propiedades "get_object_vars($this);" que no sean propiedades de la clase "get_class_vars(get_class($this))" ...
Voy a ver si lo hago y luego lo posteo finalmente.
EDITADO FINAL:
Pues finalmente la vista no extiende de ninguna clase Registry ni nada parecido. Finalmente lo que hago en mis controladores es guardar las variables en la $vista directamente y luego en la vista para cargar los datos que introduje desde el controlador, lo que hago es:
Código PHP:
$class_vars = get_class_vars( get_class( $this ) );
$class_properties = get_object_vars( $this );
$class_data = array_diff_key ( $class_properties , $class_vars );
foreach ($class_data as $key => $value)
{
$$key = $value;
}