Что хорошего унаследовать при создании CMS, который является расширяемым и / или подключаемым? - PullRequest
0 голосов
/ 30 ноября 2010

Я могу видеть, где полезно создание класса соединения с базой данных, расширять этот класс, использовать его где угодно, менять одно место, отправлять запросы с ним и так далее.Но, кроме класса соединения с базой данных, настроек БД, установки пути, что бы вы хотели унаследовать от класса верхнего уровня?

и почему сборщики CMS делают это так, чтобы выдолжны наследовать от этого высшего класса?Я предполагаю, что любой может взломать страницу и вставить в нее сырой php и заставить ее работать, но не так, как это было задумано ... но кроме этого дизайнер "заставляет" наследовать этот класс.Есть ли способ встроить Интерфейс, который проверяет, действительно ли вы наследовали так, как должны были?

Я пытаюсь выяснить, что именно стоит наследовать.Есть ли еще что-то для расширения или подключения модулей и что это на самом деле означает?

1 Ответ

1 голос
/ 01 декабря 2010

Две причины, по которым я обычно вижу наследование ОО, характерное для систем CMS, связаны с постоянством и представлением иерархии.

Постоянство вступает в игру, если вы имеете дело с системой, которая имеет свой собственный тип ORM. Таким образом, вы можете легко CRUD и запрашивать объекты без необходимости новых таблиц. Это также упрощает возможность определения отношений между различными типами сущностей, так что класс папок может иметь метод getContents, который возвращает, скажем, массив других сущностей.

Иерархия вступает в игру с базовым типом, который требует указания родительского объекта. Большинство систем CMS в значительной степени полагаются на представление контента каким-либо родительским дочерним способом или непосредственное моделирование структуры папок. Таким образом, этот тип качества в базовом классе обеспечивает соблюдение.

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

...