Структура OSC\OM
Введение
Структура OSC\OM использует новые возможности, начиная с PHP v5.5, для улучшения производительности, безопасности и модульности программной базы. Используя пространства имён и автоматическую загрузку, теперь еще проще добавлять новые функции и расширить существующие функции без необходимости редактирования основных файлов исходного кода.
Базовая структура расположена в каталоге includes/OSC:
Структура | Пространства имён | Локация |
Ядро | OSC\OM | includes/OSC/OM |
Сайты | OSC\Sites | includes/OSC/Sites |
Apps | OSC\Apps | includes/OSC/Apps |
Пространства имен / Автозагрузка
Структура построена с использованием стандарта PSR-4 автозагружаемых классов пространств имен и путей к файлам. Классы автоматически загружаются по требованию и не должны подключаться вручную.
База пространства имен автозагрузчика находится в OSC и загружает классы файлов, расположенных в каталоге includes/OSC/.
Например
Классы | Расположение файлов |
OSC\OM\OSCOM | includes/OSC/OM/OSCOM.php |
OSC\OM\Db | includes/OSC/OM/Db.php |
OSC\OM\Registry | includes/OSC/OM/Registry.php |
OSC\Sites\Shop\Shop | includes/OSC/Sites/Shop/Shop.php |
OSC\Apps\VENDOR\APP\APP | includes/OSC/Sites/Shop/Shop.php |
Классы, в структуре, должны объявить своё пространство имен в качестве первого кода PHP в файле.
Например
namespace OSC\OM;
class NewClass
{
....
}
Полное пространство имен в приведенном выше примере будет выглядеть так:
OSC\OM\NewClass
и местоположение файла будет выглядеть так:
includes/OSC/OM/NewClass.php
Для другого класса, чтобы иметь возможность автоматически загружать OSC/OM/NewClass, оно должно быть
объявлено с использованием ключевого слова PHP после того, как в пространстве имен класса и до любого другого PHP-кода.
namespace OSC\OM;
use OSC\OM\NewClass;
class AnotherNewClass
{
public function __construct()
{
$NewClass = new NewClass();
}
}
Структура автозагрузчика (OSC/OM/OSCOM::autoload()) регистрируется как автозагрузчик в includes/application_top.php и автоматически инициализируется во всех PHP файлах.
Шаблонам файлов не нужно иметь ространство имен, но по прежнему нужно ссылаться на классы структуры, которые они используют:
use OSC\OM\HTML;
echo HTML:: outputProtected('Hello World!' );
?>
Сайты
Сайты зарегистрированы в рамках инициализации и применяют параметры среды, специально для этого сайта.
Доступные сайты в ядре являются:
Сайт | Контроллер |
Shop (default) | OSC/Sites/Shop/Shop |
Admin | OSC/Sites/Admin/Admin |
Сайты зарегистрированы и получены следующим образом:
use OSC\OM\OSCOM;
OSCOM:: initialize();
OSCOM:: loadSite('Shop' );
$site = OSCOM:: getSite();
Apps
Программы представляют собой автономные пакеты, которые добавляют новые или расширить существующие возможности путем
модулей и hooks. Приложения находятся в их собственном каталоге и не нужно редактировать файлы ядра исходного кода.
Программы расположены в следующем каталоге:
Пространство имен | Расположение файлов |
OSC\Apps\VENDOR\APP | includes/OSC/Apps/VENDOR/APP |
Приложения также имеют публичный каталог для публичных доступных файлов, таких как таблицы стилей, JavaScript и изображения, расположенные по адресу:
public/Apps/VENDOR/APP
Более подробную информацию можно найти в разделе Apps.
Стандарты кодирования
Структура кодируется согласно стилю кодирования PSR-2.