Структура проекта
Прежде чем писать код, полезно понять, где что лежит. В проекте Laminas у каждой папки одна задача, и новые файлы почти всегда создают в папке module.
Папки в корне проекта
| Папка или файл | Что в ней |
|---|---|
config | Настройки приложения и список модулей |
config/autoload | Общие настройки: global.php и local.php |
module | Ваш код, разложенный по модулям |
public | Корень сайта: index.php, стили, скрипты, картинки |
data | Кеш и другие файлы, которые создаёт приложение |
vendor | Пакеты, скачанные Composer; руками не изменяют |
composer.json | Список пакетов и правила загрузки классов |
Точка входа
Любой запрос к сайту попадает в файл public/index.php. Он подключает загрузчик классов Composer, читает настройки и запускает приложение:
// public/index.php (главные строки)
use Laminas\Mvc\Application;
chdir(dirname(__DIR__));
include __DIR__ . '/../vendor/autoload.php';
$appConfig = require __DIR__ . '/../config/application.config.php';
Application::init($appConfig)->run();Строка chdir() делает текущей папкой корень проекта, поэтому пути в настройках пишут от корня: data/cache, config/autoload. Менять этот файл обычно не нужно.
Папка config
| Файл | Для чего |
|---|---|
application.config.php | Настройки запуска: откуда брать модули и настройки, включён ли кеш |
modules.config.php | Список подключённых модулей |
autoload/global.php | Настройки, общие для всех компьютеров |
autoload/local.php | Пароли и ключи конкретного компьютера |
Модуль Application
Модуль — папка с кодом одной части сайта. В заготовке есть один модуль:
module/Application/
├── config/
│ └── module.config.php
├── src/
│ ├── Controller/
│ │ └── IndexController.php
│ └── Module.php
└── view/
├── application/index/index.phtml
├── error/404.phtml
├── error/index.phtml
└── layout/layout.phtmlВ config лежат настройки модуля, в src — классы PHP, в view — шаблоны страниц (файлы с расширением .phtml). Файл layout/layout.phtml — общая рамка всех страниц, а error/404.phtml — страница «не найдено».
Папка public
Только эта папка видна из браузера. Файл public/css/style.css открывается по адресу /css/style.css. Всё остальное — код, настройки, пароли — лежит уровнем выше и по ссылке недоступно.
Частая ошибка
Свои классы и шаблоны не кладут в vendor и не правят файлы внутри этой папки: при следующем composer install или composer update изменения пропадут. Ваш код живёт в module, настройки — в config, а vendor целиком принадлежит Composer.