Структура приложения PHP

555
09 августа 2017, 21:27

Здравствуйте. Хотелось бы попросить совета, как правильно организовать структуру приложения. Я только учусь разработке на PHP. Не судите строго.

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

Не могу представить в голове структуру. На данный момент Вижу только такое:

По папкам:

  1. auth - Страница авторизации;
  2. profile - Страница с личным кабинетом, куда пользователь попадет после авторизации;
  3. templates - header.php,footer.php и остальные файлы, все они будут, как шаблон сайта
  4. core - предположительно ядро, и через эту папку можно будет войти в админку;
  5. lib - другие функции...

Вот из этого вопрос, как лучше организовать это.

Answer 1

У меня обычно для несложных приложений с нуля структура, позаимствованная из систем пэкиджей Linux и Windows, некоторый микс:

  1. В приложении есть модули
  2. Каждый модуль хранится в своей папке (это список папок, а не дерево)
  3. В этой папке есть подпапки, например, php, css, js, html, tpl
  4. Любое обращение, за исключением запросов к файлам (картинкам), производится только к одному скрипту: index.php, в котором настраивается autoload.
  5. Чтобы к index.php нельзя было обратиться напрямую, в файле .htaccess с помощью mod_rewrite задается переменная MODULE c соответствующим значением, например, admin или frontend (это названия модулей), которая будет видна в массиве $_SERVER
  6. Усли у заданного модуля есть контроллер, хоторый лежит в файле modulename/php/Ctrl.php, то index.php созздает экземпляр этого контроллера и запускает.

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

Answer 2

Смотрите как это организовано в популярных фреймворках. Например:

  • https://github.com/yiisoft/yii2-app-basic
  • https://github.com/yiisoft/yii2-app-advanced
  • https://github.com/zendframework/ZendSkeletonApplication

Да тот же 1С-Битрикс установите - посмотрите структуру как делать не стоит или наоборот стоит (тут на вкус и цвет...) ;)

А лучше на основе фреймворка и делать проект. Когда над вашим проектом будут работать другие люди - за самописное решение большого спасибо не скажут.

Именованием файлов, стайлгайд, автолоадер и т.д. обратите внимание на http://www.php-fig.org/psr/.

Если возникнет вопрос: а что изучать? Смотрите и отталкивайтесь от вакансий - что требуется и что чаще, а также вилку ЗП.

И не PHP едины - это главное не забывайте.

READ ALSO
Запись в Google таблицы без API php

Запись в Google таблицы без API php

Есть задача - сделать запись в Googlespreadsheets через php без использования API

363
Скрипт авторизации на сайте Vk.com

Скрипт авторизации на сайте Vk.com

Где можно найти актуальную версию php скрипта авторизации на сайте vkДело в том, что хочу попытаться сделать поиск через vk

313
Subprocess + php + django. Подводные камни

Subprocess + php + django. Подводные камни

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

336
вывод даты из Unix

вывод даты из Unix

Здравствуйте! Есть сайт где администратор может менять часовой пояс, после того как администратор выбрал часовой пояс, все операции(оплата,...

327