Soy relativamente nuevo en programación orientada a objetos. Entiendo bastante bien los conceptos, pero, en términos prácticos, estoy teniendo dificultades para encontrar información sobre cómo usar mejor los Modelos en mis aplicaciones de Zend Framework.Zend Framework: uso de modelos y vistas, mejores prácticas
Específicamente, tengo un modelo (que no extiende nada) que no utiliza una tabla de base de datos. Utiliza getters y setters para acceder a sus miembros protegidos. Me encuentro luchando con la mejor manera de mostrar este modelo en la vista. No quiero que la lógica de mis plantillas de vista, pero me encuentro en la siguiente situación:
En mi controlador:
$object = new Object();
$object->setName('Foo Bar');
$this->view->object = $object;
En mi plantilla de vista:
<h2><?= $this->object->getName() ?></h2>
I don' Realmente me gusta llamar funciones en mis plantillas de vista, pero no conozco una mejor manera de hacerlo. No quiero que los miembros de mi modelo a ser pública, pero básicamente quiero lograr los mismos resultados:
<h2><?= $this->object->name ?></h2>
Yo no quiero que mi controlador para hacer todo el trabajo de tener que saber todo sobre el modelo:
$object = new Object();
$object->setName('Foo Bar');
$this->view->object = $object;
$this->view->object->name = $object->getName();
¿Cuál es la mejor práctica de usar modelos en Zend Framework? ¿Alguien puede recomendar algún tutorial que me ayude a entender este dilema de Modelo/Vista en Zend Framework?
Esta es una manera pobre de hacer las cosas. No solo le da acceso arbitrario a todas las propiedades, ya sean las que deben ser (un) serializadas a/desde un formulario o no, sino que también sobrecarga el modelo con el concepto de mapeo, que es lo que realmente se solicitó. – Saem
Poner la lógica de formulario en el modelo mezcla la vista y el modelo, que también es de mala calidad. Y como ya he mencionado, anular el comportamiento predeterminado es muy simple y evita la necesidad de crear captadores y ejecutores de texto estándar estúpidos. –
Y si observas la clase Zend_Db_Table_Row, verás que Zend en realidad usa un principio similar para exponer los campos y sus valores de las tablas. –