2008-10-20 4 views
3

У меня есть несколько примитивная структура, которую я использовал для большинства своих проектов, но проблема с общим дизайном напомнила, что я еще не успел выработать. Для данного приложения следует ли я отделять структуру класса приложения от структуры фреймворка или строить поверх фреймворка не так плохо?Лучший способ организовать иерархию классов PHP

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

Класс Структура A:

  • Интуитивный, легко найти исходные файлы при отладке.
  • Именование файлов/структура каталогов Зеркала класса heirarchy.
 
- Framework_Control     "Framework\Control.php" 
    - Framework_Control_Index  "Framework\Control\Index.php" 
    - Framework_Control_Home   "Framework\Control\Home.php" 
    - Framework_Control_Contact  "Framework\Control\Contact.php" 
    - Framework_Control_About  "Framework\Control\About.php" 

Класс Структура B:

  • Держит рамочное модульные и легко заменить/обновить.
  • Добавляет некоторую сложность к структуре каталогов, именование каталога/файла больше не следует за классом heirarchy все время.
 
- Framework_Control     "Framework\Control.php" 
    - Application_Control_Index  "Application\Control\Index.php" 
    - Application_Control_Home  "Application\Control\Home.php" 
    - Application_Control_Contact "Application\Control\Contact.php" 
    - Application_Control_About  "Application\Control\About.php" 

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

ответ

1

Что действительно происходит, это то, что вы собираетесь делать, когда обновляете Framework \ Control.php в приложении XYZ. Вы собираетесь вернуться к Application ABC и внести то же самое изменение? Что, если это критическая ошибка?

Для удобства всех ваших проектов я бы воспользовался вторым вариантом.

2

Я бы предположил, что вы просматриваете исходный код в двух разных категориях, внешних зависимостях или кодах, которые используются на нескольких сайтах, а не являются родными ни для одного, ни для родных зависимостей, ни для кода, который является родным для конкретного сайта, «работаю».

Похоже, что Framework/Control.php является частью большей внешней зависимости и должно управляться как таковое, в то время как файлы Application/Control являются родными для конкретного сайта.

Использование этой дифференциации в нашей структуре кода значительно облегчило повторное использование нашей внутренней структуры между несколькими сайтами очень легко.

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