Apps OSC\Apps\ набор приложений и дополнений
Введение
Apps представляют собой автономные пакеты, которые добавляют новые функции и расширият существующие возможности без необходимости редактирования основных файлов ядра. Все файлы в App расположены в одном главном каталоге, во внешней папке общего доступа для публичных ресурсов (например: изображения, JavaScript, таблицы стилей, ..).
Структура
Программы расположены в следующем каталоге:
includes/OSC/Apps/VENDOR/APP
Файлы, которые должны быть доступны для общественности расположены по адресу:
public/Apps/VENDOR/APP
JSON структурированный файл метаданных oscommerce.json должны находиться в верхнем уровне App каталога, который описывает приложение и модули, которые он предоставляет. Модули не должны существовать в определенном каталоге в пакете - а пространство имен определяется в файле метаданных, который структура использует в качестве ссылки, чтобы найти местоположение файла, класса модуля.
По соображениям безопасности, модули, которые не описаны в файле метаданных App не будет загружен структурой.
Пример файла метаданных osCommerce\Core
{
"title": "osCommerce Core Modules",
"app": "Core",
"vendor": "osCommerce",
"version": 1.0. 0,
"req_core_version" : 2.4. 0,
"license": "MIT",
"authors": [
{
"name": "osCommerce",
"company": "osCommerce",
"email": "[email protected]",
"website": "https:/oscommerce.ru"
}
],
"modules": {
"Payment": {
"COD": "Module\\Payment\\COD"
},
"Shipping" : {
"Flat": "Module\\Shipping\\Flat",
"Zones": "Module\\Shipping\\Zones"
},
"Hooks": {
"Shop/Cart": {
"AdditionalCheckoutButtons": "Module\\Hooks\\Shop\\Cart\\AdditionalCheckoutButtons"
}
}
},
"routes": {
"Admin": "Sites\\Admin\\Pages\\Home",
"Shop": {
"newoffers": "Sites\\Shop\\Pages\\NewOffers",
"account&coupons": "Sites\\Shop\\Pages\\Coupons"
}
}
}
Пространства имен, определенные в секции modules, основаны от собственного уровня пространства имен Apps - это пространство имен Module\Payment\COD полный класс Пространство имен из OSC\OM\Apps\VENDOR\APP\Mpdule\Payment\COD.
Пространства имен также должны быть экранированы appropiately в соответствии со спецификацией JSON в противном случае файл метаданных не будет читаться. Это означает, что разделитель PHP пространства имен должен состоять из двух символов обратной косой черты вместо одной.
Схема метаданных
Параметр | Описание |
title |
Публичное название App. |
app |
Внутреннее имя приложения. Это должно быть одно слово, и совпадать с именем APP каталога приложения. |
vendor |
Имя поставщика/компании из App. Это должно быть одно слово и сопоставимо с названием приложения VENDOR. |
Параметр | Описание |
version |
Версия приложения. Это должно быть в формате X.Y.Z. |
req_core_version |
Минимальный osCommerce Online Merchant версия требуется для приложения. Это должно быть в X.y.Z формат. |
license |
Под какой лицензией выпущено App. Примеры: • лицензии GPL |
authors |
Список авторов, содержащих следующую информацию для каждого автора: • name |
modules |
Список модулей App отмеченных как доступные. Каждый тип модуль имеет свою собственную спецификацию - пожалуйста, смотрите раздел Модули для получения дополнительной информации. |
routes |
Список URL-адресов на основе путей, которые загружают контроллеры страницы App. Каждый сайт имеет свою собственную спецификацию - пожалуйста, можно найти в разделе Маршруты для получения дополнительной информации. |
Модули, установленные и зарегистрированные в базе данных не хранятся с их полными именами классов пространства имен, а с псевдонимом, как это определено в файле метаданных.
Например, ядро модуля доставки наложенного платежа, хранится в параметре конфигурации MODULE_PAYMENT_INSTALLED, как osCommerce\Core\COD. Класс оплаты знает, что модуль оплаты запрашивается и смотрит псевдоним COD, определенные в файле метаданных, чтобы получить класс в качестве Module\Payment\COD. Ссылка полное имя класса и местоположение файла будет выглядеть так:
Пространство имён | Расположение Класса |
OSC\Apps\osCommerce\Core\Module\Payment\COD |
includes/OSC/Apps/osCommerce/Core/Module/Payment/COD.php |
Модули
Модули, которые должны быть сделаны доступными для структуры, должны быть определены в файле приложения метаданных. Каждый тип имеет модуль его собственное определение спецификации, чтобы иметь возможность загрузить класс модуля по запросу просто с помощью ссылки псевдоним.
Каждый модуль должен реализовать интерфейс типа модуля, который делает функции модуля доступными структуре. Интерфейсы типа модуля расположены в следующем пространстве имен и директории:
Пространство имен | Расположение класса |
OSC\OM\Modules\ |
includes/OSC/OM/Modules/ |
Типы модулей и интерфейсы
Следующие типы модулей доступны в ядре:
Типы модуля | |
AdminDashboard Administration Dashboard modules. |
Metadata JSON |
OSC\OM\Modules\AdminDashboardAbstract OSC\OM\Modules\AdminDashboardInterface |
"app": "Core" , "vendor": "osCommerce", "modules": { "AdminDashboard": { "NewOrders": "Module\\Admin\\Dashboard\\NewOrders", "NewCustomers": "Module\\Admin\\Dashboard\\NewCustomers" } } |
AdminMenu Administration Menu modules. |
Metadata JSON |
Interface OSC\OM\Modules\AdminMenuInterface |
"app": "Core" , |
Спецификация
"modules": { |
|
Справка VENDOR \ APP \ ALIAS |
|
Content Content modules. |
Metadata JSON |
Interface OSC\OM\Modules\ContentInterface |
"app": "Core" , "vendor": "osCommerce", "modules": { "Content": { "login": { "Social": "Module\\Content\\SocialLogin" } } } |
Спецификация "modules": { |
|
Справка CONTENT MODULE GROUP / VENDOR \ APP \ ALIAS |
|
Hooks Hook modules. |
Metadata JSON |
Interface OSC\OM\Modules\HooksInterface |
"app": "Core" , "vendor": "osCommerce", "modules": { "Hooks": { "Shop/Account": { "Logout": "Module\\Hooks\\Shop\\Account\Logout" } } }
|
Спецификация "modules": { |
|
Справка VENDOR \ APP \ SITE / GROUP \ ACTION |
|
Payment Payment modules. |
Metadata JSON |
Interface OSC\OM\Modules\PaymentInterface |
"app": "Core" , "vendor": "osCommerce", "modules": { "Payment": { "COD": "Module\\Payment\\COD" } }
|
Спецификация "modules": { |
|
Справка VENDOR \ APP \ ALIAS |
Получение класса имен
Полное имя класса пространства имен модуля может быть получен с помощью его псевдонима с помощью Apps::getModuleClass():
use OSC\OM\Apps;
$class = Apps:: getModuleClass('osCommerce\Core\COD' , 'Payment' );
// $class = OSC\Apps\osCommerce\Core\Module\Payment\COD
Параметры
Apps::getModuleClass($module, $type)
Параметр | Значение |
$module |
Псевдоним модуля для извлечения из имени класса. |
$type |
Тип интерфейса модуля. |
Получение модулей
Список доступных модулей App можно получить с помощью Apps::getModules():
use OSC\OM\Apps;
$modules = Apps:: getModules('Payment' );
Параметры
Apps::getModules($type, $filter_vendor_app, $filter)
Параметр | Значение |
$type |
Если приложение предоставляет возвращать модули только из этого приложения, в противном случае все модули из всех приложений возвращаются. Это может быть ограничено вендором для всех приложений поставщика, или VENDOR\APP для конкретного App. |
$filter_vendor_app |
Передаёт тип модуля специального фильтра для фильтрации результатов. |
Маршруты
Маршруты позволяют приложениям загружать страницу контроллеров, с помощью метода маршрута распознавателя сайтов. Сайт магазина позволяет приложениям загружать страницу контроллеров, в зависимости от URL запрашиваемой страницы, а администратору сайта должен быть загружен одна своя страница контроллера, чтобы администрировать и конфигурировать приложения на панели администрирования.
"app": "Core",
"vendor" : "osCommerce",
"routes" : {
"Admin": "Sites\\Admin\\Pages\\Home" ,
"Shop" : {
"newoffers": "Sites\\Shop\\Pages\\NewOffers" ,
"account&coupons": "Sites\\Shop\\Pages\\Coupons"
}
}