Estoy escribiendo mi propio framework MVC en PHP, solo para fines de aprendizaje. No fue realmente difícil tener una clase enrutador/despachador para llamar al controlador/acción correcto, etc.Un modelo base en PHP MVC, ¿bueno o malo?
Pero ahora estoy en la parte en la que voy a usar modelos. O en realidad, la capa del modelo. Pero hay algo que me confunde.
Muchos otros frameworks MVC tienen un 'BaseModel'. He leído que esto es una mala práctica, porque el "Modelo" no debe verse como otra clase. Pero como una 'capa' real, que puede contener elementos como el patrón 'asignador' o el patrón 'repositorio', etc.
Pero para ser sincero, no veo ninguna ventaja en eso. Para mí, una clase 'BaseModel' parece ser la forma más rápida de hacerlo, con los mismos resultados.
simplemente puedo hacer algo como:
class User extends BaseModel
{
// the GetUserBy* could easily be something that's handled by the
// BaseModel class, like in the Repo pattern.
public function getUserByName ($name)
{
// no error handling of any kind, just for simplicity
return $this->db->exec("SELECT * FROM users WHERE name='".$name."'");
}
// $data = array
public function saveUser ($data)
{
// Make sure no extra fields are added to the array
$user = array ('name' => $data['name'],
'address' => $data['address']);
$this->db->autoSave ($user);
}
}
Pero si yo iría a un patrón repositorio entonces tengo que crear los siguientes: repositorios Entidades DAO
Las entidades tienen agregados a otros repositorios. Básicamente estoy escribiendo manualmente mi esquema de base de datos completo para objetos ...
Al final, ¿cuál es la diferencia? Excepto que probablemente podría haber ahorrado un montón de tiempo simplemente usando una clase de BaseModel ...
¿Pero por qué todavía se considera algo malo? No es que el patrón repo desacople mi aplicación más de lo que estoy haciendo ahora. Porque para mí, esos patrones mencionados anteriormente parecen estar muy sobrevalorados. Probablemente solo funcionaría en una aplicación que tiene un estado compartido; Guarde objetos localmente (en el repositorio) y confírmelos más adelante.
Es por eso que creo que nadie puede responder a esta ...
pero todavía estoy esperando ver una respuesta decente que me hace ir: "ahhhh ... ¿Qué estaba pensando .... ". Pero si no, entonces estoy seguro de mi caso de que el BaseModel no es nada malo y que la mayoría de los bloggers son solo un montón de ovejas :-)
parece bonito [Propel] (http://www.propelorm.org/) -ish – Alp
¿Puede darnos un enlace a una de estas publicaciones de blog? – webbiedave
@Alp el ejemplo del código? Propel es solo un ORM, no voy en esa dirección, porque me gusta escribir consultas yo mismo. No realicé ORMs. Pero prefiero no usarlos tampoco. Algo de 'magia' está bien, pero no demasiado. Pero esa es toda una historia diferente. – Vivendi