Какова лучшая структура класса для простой среды php? - PullRequest
0 голосов
/ 27 апреля 2009

Я пытаюсь создать простую инфраструктуру php. Но я не уверен насчет структуры классов, например, какие классы должны распространяться на какие классы. Во-первых, я знаю, что некоторые базовые классы, такие как классы Router, View, должны иметь доступ к некоторым базовым данным. например, запрошенный URL или запрошенный ccontroller и действие, так как я могу импортировать основные данные в эти классы. Если мой вопрос неясен, пожалуйста, объясните свой собственный опыт и идеи относительно frameworks. или, если вы знаете, расскажите об известных фреймворках, таких как zend, cakephp или symfony

Ответы [ 3 ]

1 голос
/ 28 апреля 2009

Существует простое эмпирическое правило:

  • Либо у вас есть потребность, что стандартные рамки не могут выполнить
  • или вы должны использовать хороший стандартный фреймворк, который делает то, что вам нужно.

В первом случае ограничение будет основным аспектом вашего дизайна.

Нет общего правила проектирования для структур классов в фреймворках. Но попробуйте помнить об этом, если решите написать свой собственный:

  • Минимизация зависимостей между модулями
  • Всегда старайтесь указывать значения по умолчанию
  • Постарайтесь минимизировать накладные расходы
  • Поговорите со сверстниками об этом, чтобы рано найти недостатки.
1 голос
/ 27 апреля 2009

Нет лучшей структуры класса. Зависит от того, что вы пытаетесь сделать. Вы имеете в виду чистый дизайн MVC? Самый проверяемый? Самое простое для понимания?

0 голосов
/ 28 апреля 2009

Если вы никогда не работали в чужой среде, вы не будете знать, какие идеи вам подходят, а какие нет. Если вы когда-либо работали только с неорганизованным кодом спагетти, тогда у вас будет представление о том, что для вас имеет смысл. Если вы внесли существенную реорганизацию в неорганизованный код спагетти в более чем одном несвязанном проекте, у вас должно быть хорошее представление о том, как вы думаете при создании фреймворка. : -)

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

Отвечая на @MrFox, вы должны знать об опасных зависимостях. Очевидно, что уровень доступа к данным будет зависеть от обработчика базы данных; так что вы не хотите, чтобы ваш обработчик базы данных зависел от вашего уровня доступа к данным. На самом деле, вы не хотите, чтобы они тоже знали друг друга. Это должен быть разумный интерфейс «черного ящика».

Кроме того, ряд фреймворков пытаются построить «одну» иерархию объектов. Это означает, что они думают, что Действие - это Модель - это Обработчик базы данных. У меня лично есть проблемы с этой неправильно примененной абстракцией, так что это хедз-ап, чтобы не бояться отвергнуть эту идею, если она тоже не сработает для вас. Как сказал @Tyndall, нет ни одного, единственного «правильного» способа сделать это.

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