Корневые скрипты
Собственно, это то, с чего начинается магазин. Как правило, основной корневой скрипт называется index.php и вызывается автоматически, при открытии сайта. Впрочем, Вы можете изменить это используя файл настроек .htaccess. В исходной конфигурации, добавлены следующие корневые скрипты:
- index.php - отправная точка для вызова соответствующего модуля/модулей формирующих витрину магазина.
- lazy.php - типовой скрипт, для реализации метода "ленивой" или отложенной загрузки модуля. Используется, чтобы ускорить отображение страницы, когда она достаточно сложная и содержит внутри себя много разных модулей.
- minify.php - служебный скрипт, который выполняет обфускацию скриптов. Задается в настройках "Среды разработки".
<?php
/***************************************************************************************************
*
* index.php - index page
*
***************************************************************************************************
* @version 6.3.0
* @copyright 2019 Melbis Company
* @link https://melbis.com
* @author Dmitriy Kasyanoff
**************************************************************************************************/
Заголовок скрипта - описание задач, имя автора и его реквизиты.
// Require
require_once('config.php');
require_once('units/melbis_inc.php');
В этой строке мы получаем переменные конфигурации и вызываем модуль-библиотеку melbis_inc. Этот модуль содержит стандартные действия, предшествующие работе любого скрипта. Этих действий немного, и Вы можете просмотреть и при желании переписать их по своему усмотрению. Так же этот модуль содержит ряд стандартных функций, которые могут вызываться из этого и других скриптов. Например, функция аварийного завершения работы: MELBIS_INC_halt. Еще этот модуль содержит специальную функцию __autoload, которая автоматически загружает PHP-классы, обеспечивающие работу ядра интернет-магазина.
// Create connect with DataBase
$gDb = new MySql('MELBIS_INC_halt');
$gDb->Connect(__FILE__, __LINE__);
Инициализация соединения с базой данных. Указатель соединения будет храниться в глобальной переменной $gDb. В качестве параметра передаем имя функции отвечающей за вывод сообщений об ошибках. По умолчанию это MELBIS_INC_halt.
// Create Parser
$gParser = new Parser('MELBIS_INC_halt', $gDb);
Инициализация парсера. Это Ваш главный инструмент для построения витрины. Именно используя его методы и свойства, Вы сможете оперировать с данными и формировать содержимое всех модулей в дальнейшем. Для параметров, вновь используем имя функции для сообщений об ошибках MELBIS_INC_halt и указатель соединения с базой данных $gDb.
// Define self constants
$gParser->DefineSelfConst();
Загрузка пользовательского набора "ключ -> значение" и определение их как констант. Для этого используется PHP-функция - define. Данные берутся из таблицы self_key_value. Список пользовательских констант определяется в разделе "Реестр настроек".// Define session
$gSession = $gParser->DefineSession(DB_USER_NAME.'_MELBIS_SHOP');
Инициализация PHP-сессии. Указатель сессии будет храниться в глобальной переменной $gSession. В данном случае, в качестве параметра для инициализации сессии используется только имя, но кроме этого здесь также можно указать и ряд других. Подробнее в описании API Parser.
// Define module
if ( isset($gGet['topic_id']) ) $gGet['mod'] = 'melbis_base_topic';
if ( !isset($gGet['mod']) ) $gGet['mod'] = 'melbis_base_index';
Определение модуля который будет вызван в дальнейшем. Как уже говорилось, основная задача корневого скрипта определить какая часть витрины магазина запрашивается и запустить соответствующий модуль. В данном примере, мы исходим из переменных $gGet['topic_id'] и $gGet['mod']. Массив $gGet был определен в модуле melbis_inc на основе системного $_GET.
// Parse
$gParser->Parse($gSitePath, $gTemplate, $gGet['mod'], [serialize($gGet), serialize($gPost)], $gUseCache, $gBuild);
Непосредственно запуск самого парсера на исполнение и формирования конечного HTML-кода страницы витрины магазина. В качестве параметров мы передаем следующие переменные:- $gSitePath - путь к магазину относительно домена сайта (задается в модуле melbis_inc)
- $gTemplate - имя текущего набора шаблонов (задается в библиотеке melbis_inc, а определяется в разделе "Инсталляция")
- $gGet['mod'] - имя вызываемого модуля, который кстати должен быть разрешен для доступа из вне (подробнее чуть ниже)
- [serialize($gGet), serialize($gPost)] - массив входных значений для вызываемого модуля. В данном случае передаем оба массива данных типа GET и POST
- $gUseCache - флаг использования системы кеширования данных (задается в модуле melbis_inc)
- $gBuild - номер текущей сборки магазина (используется для сброса кеша в браузерах для CSS и JavaScript-файлов и задается в модуле melbis_inc)
Обратите внимание, что вызываться модули могут по-разному. Первый вариант, Вы сейчас увидели, это с помощью метода парсера $gParser->Parse. Но кроме этого способа, модуль может вызывать другой модуль через HTML-шаблоны. При проектировании магазина или сайта, нам с Вами важно, чтобы не произошло его взлома и злоумышленник не смог вызвать любой модуль, который только пожелает. Поэтому, в разделе "Среда разработки" у каждого модуля есть опция "Доступен запуск извне", с помощью которой можно разрешить/запретить вызов модуля первым способом, то есть через index.php и команду $gParser->Parse (об этом подробнее будет рассказано в разделе "Модульные скрипты").
// Publish
$gParser->Publish();
// Possible report
$gParser->Report();
?>
Завершение работы скрипта и публикация сформированной страницы. Если включена опция печати статистики парсера, то она будет выведена после содержимого страницы. Вот собственно и все, как видите корневая страница это достаточно лаконичный скрипт, который выполняет инициализацию данных и определяет исходный модуль.