Архитектура CMS на PHP

Рейтинг: 0Ответов: 1Опубликовано: 02.05.2015

Пишу CMS на PHP с использованием паттерна MVC.

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

Есть варианты:

  • Использовать свой автозагрузчик
  • Использовать загрузчик composer (у меня в любом случае будут некоторые пакеты из него использоваться)

По поводу физического расположения есть варианты:

  • Сделать пакет для composer и хранить в папке vendor
  • Хранить в папке App в корне сайта (или любой другой)

И третья проблема вытекающая из всего этого - как организовать неймспейсы.

Надеюсь я достаточно четко сформулировал проблему. Если нет, буду править с помощью уточняющих комментариев.

Ответы

▲ 1Принят

Использовать автозагрузчик композера. Нет смысла писать еще один такой же.

По поводу физического расположения - текущее приложение должно быть в корне проекта, сами файлы библиотеки - скачиваться через packagist.org в /vendor, при этом текущее приложение может тупо ограничиваться одним файлом public/index.php. Ябы целенаправленно делил систему на "библиотеку" и "текущее приложение", в которой файлы текущего приложения могут быть в произвольном неймспейсе и подключаться как плагины.

Неймспейсы должны быть организованы, как и всегда - Vendor\Package\..., например Etki\SimpleApp\....

Последнее, что нужно сказать - вы, скорее всего, на самом деле не напишете целую CMS. Я тут с небольшим проектом "с нуля" бьюсь общим счетом уже неделю просто потому, что хочу организовать архитектуру целиком и полностью без изъянов.