У меня есть несколько примитивная структура, которую я использовал для большинства своих проектов, но общая проблема дизайна напомнила мне, что я еще не успел это сделать. Для данного приложения следует ли я отделять структуру класса приложения от структуры фреймворка или строить поверх фреймворка не так плохо?
Например, скажем, у меня была структура с базовым классом 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:
- 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"
Я знаю, что в целом это сведено к личным предпочтениям, но я хочу убедиться, что я взвешиваю все плюсы и минусы, прежде чем решиться, куда идти. Это действительно сводится к классу именования и структуре каталогов, поскольку фактическая иерархия осталась бы одинаковой в любом случае.
На самом деле это то, что вы собираетесь делать, когда обновляете Framework \ Control.php в приложении XYZ. Вы собираетесь вернуться к Application ABC и внести то же самое изменение? Что, если это критическая ошибка?
Для поддержки всех ваших проектов я бы воспользовался вторым вариантом.
Я бы предположил, что вы просматриваете исходный код в двух разных категориях, внешних зависимостях или кодах, которые используются на нескольких сайтах и не являются родными ни для одного, ни для родных зависимостей, ни для кода, который является родным для конкретного сайта, на котором вы работаете ,
Похоже, что Framework / Control.php является частью большей внешней зависимости и должен управляться как таковой, в то время как файлы Application / Control являются родными для конкретного веб-сайта.
Использование этой дифференциации в нашей структуре кода значительно облегчило повторное использование нашей внутренней структуры между несколькими сайтами очень легко.
В качестве последней мысли вы можете подумать над тем, что делают основные каркасы, такие как Zend Framework, Symfony и другие. Несмотря на то, что вся инфраструктура может быть больше, чем вы хотите, чтобы структура фреймворков могла обеспечить много общего в общих примерах, передовые методы, которые используются разработчиками PHP во всем мире.