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": {

"new­offers": "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
• LGPL
• MIT
• проприетарная

  authors

 Список авторов, содержащих следующую информацию для каждого автора:

• name
• company
• email
• website

  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" ,

"vendor": "osCommerce",

"modules": {

"AdminMenu" : {

"Products":
"Module\\Admin\\Menu\\Products",

"Orders": "Module\\Admin\\Menu\\Orders"

}

}

   Спецификация
"modules": {

"AdminMenu" : {

"ALIAS": "CLASS"

}

}
 

 Справка

VENDOR \ APP \ ALIAS

osCommerce\Core\Products

osCommerce\Core\Orders

Content

Content modules.

  Metadata JSON
  Interface
OSC\OM\Modules\ContentInterface
"app": "Core" ,
"vendor": "osCommerce",
"modules": {
 "Content": {
  "login": {
   "Social": "Module\\Content\\SocialLogin"
  }
 }
}
 

 Спецификация

"modules": {

"Content": {

"CONTENT MODULE GROUP": {

"ALIAS" : "CLASS"

}

}

}
 

 Справка

CONTENT MODULE GROUP / VENDOR \ APP \ ALIAS

login/osCommerce\Core\Social
  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": {
"Hooks": {
"SITE / GROUP": {
"ACTION": "CLASS"
}
}
}
 

 Справка

VENDOR \ APP \ SITE / GROUP \ ACTION
osCommerce\Core\Shop/Account\Logout
  Payment
Payment modules.
  Metadata JSON
  Interface
OSC\OM\Modules\PaymentInterface
"app": "Core" ,
"vendor": "osCommerce",
"modules": {
 "Payment": {
  "COD": "Module\\Payment\\COD"
 }
}
 

 Спецификация

"modules": {

"Payment": {

"ALIAS": "CLASS"

}

}
 

 Справка

VENDOR \ APP \ ALIAS
osCommerce\Core\COD

 

Получение класса имен

Полное имя класса пространства имен модуля может быть получен с помощью его псевдонима с помощью 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" : {
"new­offers": "Sites\\Shop\\Pages\\NewOffers" ,
"account&coupons": "Sites\\Shop\\Pages\\Coupons"
}
}
Предыдущая статья:

Hooks - хуки в osCommerce v2.4

Следующая статья:

Registry osCommerce v2.4