Лучший способ организовать иерархию классов PHP

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

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

Структура классов A:

  • Интуитивно понятный, легко найти исходные файлы при отладке.
  • Структура именования файлов / каталогов отражает иерархию классов.
 - 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 "Приложение \ Control \ Index.php"
    - Application_Control_Home "Application \ Control \ Home.php"
    - Application_Control_Contact "Приложение \ Контроль \ Contact.php"
    - Application_Control_About "Приложение \ Контроль \ О.php"

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

Solutions Collecting From Web of "Лучший способ организовать иерархию классов PHP"

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

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

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

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

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

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