Автозагрузка классов
DevelNext и JPHP по-умолчанию используют автозагрузку классов, используя имена классов. Автозагрузка, это способ автоматически подключать файлы с классами по мере их использования. Это означает, что класс не будет загружен в систему до тех пор, пока он не будет где-то использован в коде.
Название классов
Название классов в 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://
Протокол res://
- это системный протокол внутри JPHP и DevelNext, он помогает обращаться к любым файлам из ресурсных источников. Если вы разрабатываете проект в DevelNext, то ресурсной папкой будет <путь к проекту>/src
. После компиляции, все файлы внутри src
попадают в исполняемый файл и их по прежнему можно читать по протоколу res://
, хоть они уже и находятся внутри вашего приложения.
Смотрите также
Посмотрите альтернативный обзор этой возможности в статье нашего активного пользователя https://tssaltan.ru/969.develnext-подключение-сторонних-классов/.