PHP MVC Модель с наследованием? - PullRequest
1 голос
/ 04 октября 2011

Я пытаюсь перенести проект в среду MVC (выбор между CI и Yii).

Теперь у меня есть два объекта: текст и изображение, которые я хотел бы построить на основе класса объектов.

Родитель:

class Object() extends Somemodel{
protected $x;
protected $y;
protected $page;
...
methods()...
}

И дети:

class Image() extends Object{
protected $width;
protected $height;
...
methods()...
}

class Text() extends Object{
protected $text;
protected $font;
...
methods()...
}

Теперь, насколько я понимаю, это хороший подход, поскольку некоторые общие функции, такие как получение координат x / y и т. Д., Будут помещены в объект, а все специфические объекты будут помещены в дочерние классы.

Я надеялся, что в базе данных будет одна таблица для хранения объекта.

Однако фреймворки дают мне трудные времена, чтобы попытаться заставить их работать ... что заставляет меня думать, что, вероятно, я делаю что-то не так, потому что, если бы все делали это так, то, я полагаю, фреймворки легко это поддержали бы .

Есть мысли?

Ответы [ 2 ]

3 голосов
/ 04 октября 2011

Ты не должен этим заниматься. Вы нарушаете принцип подстановки Лискова ( быстрая картина, чтобы объяснить это ), который в основном говорит, что вы должны иметь возможность заменить экземпляр любого дочернего класса на экземпляр родительского класса.

P.S. это всего лишь мое мнение, но я бы предупредил вас об обеих упомянутых выше рамках. У них обоих есть серьезные недостатки дизайна и другие проблемы. (если вы хотите узнать подробности, посетите php chat room .. нет смысла зажигать здесь)

1 голос
/ 04 октября 2011

Ваш вопрос имеет смысл, если представить, что каждый фреймворк запускает свой собственный ORM.Однако я думаю, что у Symfony была правильная идея: интегрироваться с хорошими, отдельно поддерживаемыми системами ORM, чтобы основная команда могла сосредоточиться на самой платформе.

Поэтому я бы посмотрел на Propel или Doctrine (оба хорошоподдерживается, и оба поддерживают наследование модели (аааик), а затем выберите свою среду, на основе которой обеспечивается хороший уровень интеграции с выбранным вами ORM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...