Skip to content

PackageSystem

Dmitriy Zayceff edited this page Feb 22, 2017 · 23 revisions

Система пакетов

⚠️ Внимание, в данной статье описывается механизм, который находится в разработке и появится лишь в DevelNext 16.3 версии.

Система пакетов в jphp позволяет объединить несколько классов, функций и констант в один пакет. Затем, пакет можно легко подключить в скрипте через use <название пакета>, благодаря чему в скрипте станут доступны все классы, функции и константы пакета.

ℹ️ Не стоит путать пакет jphp с пакетами расширений DevelNext. Пакет в jphp можно создать вне всякого расширения DevelNext. Это является новой возможностью языка php в рамках jphp.


Оглавление


### Структура пакета Пакет в jphp состоит из списка классов, функций и констант. Он имеет короткое название, которое всегда начинается с маленькой буквой. В итоге в пакете мы имеем: - Имена классов - Имена функций - Имена констант

Имена должны быть полными, namespace классов, функций и констант может быть любой, нет никаких строгих правил на этот счет.


### Автозагрузка пакетов

JPHP из коробки предоставляет механизм автозагрузки пакетов по аналогии с автозагрузкой классов. Реализуется он через класс php\lang\PackageLoader и в движке для develnext реализован свой загрузчик пакетов FrameworkPackageLoader, который реализует следующий механизм подключения пакетов:

  1. Все пакеты находятся в папке ресурсов .packages, в текстовом файле .packages/<имя пакета>.pkg.
  2. Опционально подключается файл .packages/<имя пакета>.php при подключении пакета (файл не обязателен).
  3. Файл пакета .pkg содержит список классов, функций и констант в следующем формате:
[classes]
Class1
namespace1\Class2
...

[functions]
func1
func2
namespace1\func3

[constants]
constant1
namespace2\constant2
Clone this wiki locally