-
Notifications
You must be signed in to change notification settings - Fork 30
ClassLoading
DevelNext и JPHP по-умолчанию используют автозагрузку классов, используя имена классов. Автозагрузка, это способ автоматически подключать файлы с классами по мере их использования. Это означает, что класс не будет загружен в систему до тех пор, пока он не будет где-то использован в коде.
- [Название классов](#Название классов)
- [Механизм загрузки](#Механизм загрузки)
- [Ресурсы и протокол res://](#Ресурсы и протокол res://)
- [Смотрите также](#Смотрите также)
Название классов в php обычно состоит из namespace и короткого названия. Для примера разберем класс php\gui\UXButton.
<?php
namespace php\gui;
class UXButton {
}Здесь мы видим класс UXButton, который объявляется внутри пространства имен php\gui. По этим критериям формируется полное название класса, т.е. php\gui + UXButton и выход php\gui\UXButton.
Символ
\в названиях является частью синтаксиса php и является символом разделителя вnamespace.
В php есть стандартный механизм автоподгрузки классов, см. здесь. С помощью этого механизма, в DevelNext реализована следующая схема:
- Встречается класс
php\gui\UXButton. - Если класс еще не существует, срабатывает загрузчик.
- Загрузчику передается полное название класса, т.е.
php\gui\UXButton. - По названию класса загрузчик формирует путь к php файлу с классом.
- DevelNext его сформирует как
res://php/gui/UXButton.php, файл из ресурсов. - Происходит
include "res://php/gui/UXButton.php".
Протокол res:// - это системный протокол внутри JPHP и DevelNext, он помогает обращаться к любым файлам из ресурсных источников. Если вы разрабатываете проект в DevelNext, то ресурсной папкой будет <путь к проекту>/src. После компиляции, все файлы внутри src попадают в исполняемый файл и их по прежнему можно читать по протоколу res://, хоть они уже и находятся внутри вашего приложения.
Посмотрите альтернативный обзор этой возможность в статье нашего активного пользователя https://tssaltan.ru/969.develnext-подключение-сторонних-классов/.