Умные структуры организации приложений PHP?

10

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

Как PHP-разработчик, мне интересно, если какой-либо тип стандартизации начинает появляться среди проектов. С PSR-0 у нас наконец-то появился стандарт для именования и загрузки файлов, но, насколько мне известно, ничего не известно об остальных компонентах, составляющих систему, или о том, как их можно обрабатывать в разумных пределах.

Мы имеем дело с гораздо большим, чем просто с MVC, так какие примеры крупных проектов правильно обрабатывают все эти вещи?

Xeoncross
источник
3
Как один из разработчиков PHP, я не ожидал бы здравомыслия от компонентов PHP
CamelBlues
2
@CamelBlues Исходя из шансов на случайность, некоторые разработчики PHP в конце концов все перепутали и что-то сделали правильно.
Xeoncross
Я не видел много, насколько стандартизация. До последних нескольких лет у вас были свои папки для интерфейсных вещей (js, css), а затем у вас были бы включения или библиотеки, а затем шаблоны или темы - и все. В последнее время с ростом популярности MVC-фреймворков все неясно. Я бы сказал, что пока не стоит беспокоиться об использовании стандарта и просто проясните, что происходит в вашем конкретном приложении.
Джейсон

Ответы:

3

На самом деле невозможно стандартизировать, как проекты должны быть изложены, потому что «это зависит».

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

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

Фентон
источник
+1 В целом я с вами согласен, это, безусловно, обоснованный момент. Однако, если вы удалите вещи вне языка (папки с резервными копиями, сценарии cron / build, статические ресурсы и т. Д.) И просто сосредоточитесь на самом языке - я не верю, что можно привести такой же аргумент. На языки уже наложены ограничения. Выяснить, как организовать все ваши классы и кодовые блоки, чтобы они имели смысл для каждого проекта, - это реальная и достижимая цель.
Xeoncross
0

Похоже, что не предпринимается никаких усилий по стандартизации, и, честно говоря, я не вижу выгоды. Существует только одно правило, которого вы должны придерживаться, это то, что вы никогда не должны иметь под докутом вещи, которые там не принадлежат (основная мера безопасности).

Кроме этого, я бы просто пошел с тем, что имеет смысл для проекта.

Если вы используете MVC (либо через фреймворк, либо через ad-hoc), то имеет смысл использовать базовую структуру с / models, / views и / controllers. Но даже если это не так, у вас обычно есть какой-то слой доступа к данным с классами, которые отображаются на ваши объекты данных; имеет смысл иметь каталог для них; у вас также обычно есть куча классов бизнес-логики и служебных функций, так что другой каталог для них; если вы используете систему шаблонов, шаблоны переходят в другой каталог; и тогда вам, вероятно, понадобится каталог «библиотеки», куда вы помещаете все сторонние библиотеки. (Как только вы достигнете этой точки, вы все равно будете делать MVC).

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

tdammers
источник
0

Вы можете следить за макетом проекта для двух самых популярных платформ приложений:

  1. Zend Framework - http://www.framework.zend.com/manual/en/project-structure.project.html
  2. Symfony - http://symfony.com/doc/current/book/installation.html

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

Стивен Сенкомаго Мусоке
источник