Когда я говорю о языках сценариев, я говорю о таких языках, как Python, Perl и (в моем случае) PHP. После использования CodeIgniter, Zend и множества других увлекательных систем MVC кажется очевидным, что единственное, с чем можно было бы согласиться, - это структура папок (наряду с другими вещами_подобными). Это действительно вызывает у меня проблему, потому что я не могу найти хорошую документацию о преимуществах различных конструкций конструкций. Большинство людей просто рекомендуют один, потому что это то, что они используют без учета улучшений в дизайне.
Одна из вещей, с которыми, я надеюсь, мы все согласимся, заключается в том, что проверка файловой системы на наличие файлов при автоматической загрузке классов - очень плохая практика. Наши классы не должны находиться в одном из 5 возможных мест, вызывающих множество проверок file_exists () для каждой загружаемой нами библиотеки.
Так или иначе, я пытаюсь собрать структуры каталогов, которые я могу сравнить, чтобы найти лучшие практики при планировании приложений, которые:
- Основаны на ООП, что, скорее всего, означает MVC
- являются международными по объему и поддержке языковых файлов / переводов
- Открыты для модулей / плагинов, так что полные пакеты могут быть сброшены в нашу кодовую базу
- Четко определите, что происходит и где искать данные классы
- Возможна поддержка нескольких сайтов, работающих в одной структуре (см. / Каталоги сайтов ниже)
Итак, вот что у меня есть. Помните, что libs - это просто термин, обозначающий вашу основную директорию библиотеки / класса и может даже содержать модели в зависимости от структуры папок. Кроме того, я исключил любой тип статического контента (JS / CSS / images), так как этот материал действительно запоздалый и не имеет отношения к нашему серверному коду - он может быть даже на другом сервере! То же самое с кешами, загрузками файлов, lang и всем другим сгенерированным контентом.
/controllers
/views
/models
/libs
/config
index.php
Этот вид напоминает мне фреймворк Zend, который собирает все в одну папку libs (которая также включает в себя подпапки, чтобы упорядочить вещи). Работает только для одного сайта.
/libs
/site
/controllers
/views
/models
/config
index.php
Это будет многосайтовая версия вышеуказанной структуры.
/libs
/functions
/site
/controllers
/models
/views
/config
/site2
/controllers
/models
/views
/config
/modules
/user
/controllers
/models
/views
index.php
Это будет версия, которая позволит использовать несколько сайтов и . Модули будут самостоятельными приложениями MVC, такими как форум, который будет включать бизнес-логику, CRUD и представления.
Так есть ли у кого-нибудь совершенная структура , которой они могли бы поделиться или помочь мне выбрать хороший расширяемый дизайн?