2.8 Composer и автозагрузкаlink

Назначениеlink

SFLoader использует Composer для автозагрузки классов, что упрощает структуру проекта и избавляет от необходимости вручную подключать каждый файл.
Подключение происходит через стандартный файл vendor/autoload.php, сгенерированный Composer.

Структура проектаlink

Файл composer.json и папка vendor/ находятся в корне:

 /simai/composer.json 
 /simai/vendor/

Классы загрузчика, например SIMAI\Main\Loader\Loader, расположены в:

 /simai/loader/src 
require_once $_SERVER["DOCUMENT_ROOT"] . "/simai/vendor/autoload.php";
use SIMAI\Main\Loader\Loader;
$loader = new Loader();
$loader->init();

// при необходимости ajax-запроса simai/loader/loader.php:
$loader->initLoader();

Настройка composer.jsonlink

Пример composer.json:

 {
   "name": "sf5/new",
   "autoload": {
     "psr-4": {
       "SIMAI\\Main\\Loader\\": "loader/src/"
     }
   },  
   "files": ["loader/src/Constants.php"],
   "require": {"teamtnt/tntsearch": "^4.4", 
   "ext-dom": "*", 
   "matthiasmullie/minify": "^1.3", 
   "ext-zlib": "*"    }
 }

После изменения необходимо выполнить:

composer dump-autoload

Преимущества использования Composerlink

  • Автоматическая загрузка всех классов;
  • Совместимость с IDE (автокомплит, поиск по классу);
  • Упрощённая структура и масштабируемость;
  • Стандартизированный способ подключения во всех окружениях.

Где используетсяlink

  • В loader.php подключаемом с клиента;
  • В init.php, тестовых и CLI-скриптах;
  • Во всех точках, где необходимо использовать классы загрузчика.

2.6 Constants.php — Глобальные пути и окружениеlink

Назначениеlink

Файл Constants.php содержит ключевые глобальные константы, которые используются по всей серверной части SFLoader.
Эти значения определяют корневую директорию фреймворка и его физическое расположение на диске.

Определяемые константыlink

const SF_MAIN = '/simai'; define("SF_PATH", $_SERVER["DOCUMENT_ROOT"] . SF_MAIN);

Значенияlink

  • SF_MAIN — относительный путь до корня фреймворка внутри проекта (используется в URL);
  • SF_PATH — абсолютный путь на диске (используется для чтения файлов).

Используется в:link

  • LoaderAsset.php — путь к ассетам (/asset/...);
  • AssetManager.php — кэш, временные файлы (/cache/loader/...);
  • TemplateLoader.php — путь до шаблонов (/cache/templates.txt);
  • Loader.phpclearCacheAnConfig(), getConfig(), getModule() и другие методы;