Я пишу свою собственную структуру MVC в PHP, только для учебных целей. Было не так уж сложно иметь класс маршрутизатора/диспетчера для вызова правильного контроллера/действия и т. Д.BaseModel в PHP MVC, хороший или плохой?
Но теперь я нахожусь в той части, где я собираюсь использовать модели. Или на самом деле, модельный слой. Но меня что-то смущает.
Атомные рамки MVC имеют «BaseModel». Я читал, что на самом деле это плохая практика, потому что «Модель» не следует рассматривать как другой класс. Но как настоящий «слой», который может содержать такие вещи, как шаблон «mapper» или «репозиторий» и т. Д.
Но, честно говоря, я не вижу в этом никаких преимуществ. Для меня класс BaseModel кажется самым быстрым способом, с теми же результатами.
я могу просто сделать что-то вроде:
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);
}
}
Но если я бы пойти на хранилище шаблон, то я должен создать следующие: Хранилища Entities DAO
образований заполнителей другие репозитории. Поэтому в основном я вручную выписываю всю схему базы данных для объектов ...
В конце концов, какая разница? За исключением того, что я, вероятно, мог бы сэкономить много времени, просто используя класс BaseModel ...
Но почему это все еще считается плохой? Дело не в том, что шаблон репо отделяет мое приложение больше, чем я делаю сейчас. Потому что для меня эти шаблоны, упомянутые выше, кажутся очень завышенными. Вероятно, он работает только в приложении, имеющем общее состояние; Сохранять объекты локально (в репозитории) и позднее их передавать.
Вот почему я думаю, что никто не может реально ответить на этот вопрос ...
Но я все еще надеясь увидеть достойный ответ, который заставляет меня идти: «Ааааа ... Что я думал .... ». Но если нет, то я уверен в моем случае, что BaseModel - это совсем не плохо, и что большинство блоггеров - всего лишь кучка овец :-)
выглядит довольно [Propel] (http://www.propelorm.org/) -ish – Alp
Можете ли вы дать нам ссылку на один из этих сообщений в блоге? – webbiedave
@ Приведите пример кода? Propel - это просто ORM, я не собираюсь в этом направлении, потому что мне нравится сами писать запросы. Я не перезаряжаю ORM. Но я тоже не использую их. Некоторая «магия» в порядке, но не слишком много. Но это совсем другая история. – Vivendi