Архитектура PrestaShop

Архитектура PrestaShop

Общая архитектура PrestaShop основана на принципе MVC - «Модель-представление-контроллер». Не смотря на то, что Prestashop не строго придерживаться этого принципа, его понимание полезно для общего представления работы скрипта.

Модель

Модели в Prestashop представляют собой классы потомки базового класса «ObjectModel». Класс ObjectModel предоставяет базовые функции для инкапсуляции таблиц базы данных, составляющих основу магазина. Он обеспечивает CRUD (Create, Read, Update и Delete) функциональность, а также реализацию проверки данных и поддержки многоязычности. Расширяя базовую функциональность, конкретные классы создаются для управления данными, используемыми в магазине. Модели PrestaShop расположены в директории /classes и управлют привязанными к ним данными, хранящимися в базе данных (например категория, товар, заказ и т.д.). Каждый класс хранится в PHP файле, имя которого соответствует имени класса, который содержится в нем, например файл Order.php содержит класс OrderCore, отвечающий за управление заказами.

При первом обращении к классу происходит автоматическое подключение, содержащего его файла (реализацию см. в config/autoload.php). Благодаря такому подходу существует возможность переопределения классов ядра. То есть можно вносить изменения в базовую функциональность движка, не изменяя при этом оригинальные файлы, что позволяет обновить PrestaShop, не потеряв внесенные изменения.

Для переопределения базовых классов нужно создать в директории override/classes (для моделей) или override/controllers файл, с тем же названием, что и изменяемый базовый класса, содержащий класс-потомок. Например:

class Tools extends ToolsCore
{
	static public function link_rewrite($str, $utf8_decode = false)
	{
		if (preg_match('/[А-Яа-я]+/', $str)){
			$cyr = array('а', 'б', 'в',...);
			$lat = array('a', 'b', 'v',...);
			$str = mb_strtolower($str, 'utf-8');
			$str = str_replace($cyr, $lat, $str);
		}
		return parent::link_rewrite($str, $utf8_decode);
	}
}

В данном примере производится замена функции Tools::link_rewrite() для транслитерации ЧПУ.

Представление

Представление данных из PrestaShop производится при помощи механизма шаблонов Smarty. Использование шаблонов позволяет отделить бизнес-логику от отображения информации. Файлы шаблонов Prestashop по большей части хранятся в директории /themes, в поддиректории с определенной темой, которая может быть выбрана в админ панели. Многие модули также хранить свои собственные файлы шаблонов в собственной директории. Шаблоны модулей могут быть переопределены при помощи шаблонов выбранной темы.

Контроллер

Контроллер - это основа бизнес-логики страницы или набора страниц, с общим назначением. Они отвечают за взаимодействие с моделями для получения данных, применяют бизнес-логику к ним и передают выходные данные представлению. В PrestaShop 1.4 контроллеры находятся в директории controllers и являются потомками базового класса FrontController. Для обеспечения совместимости с версией 1.3 в корневой директории содержатся заглушки, которые содержать вызов соответствующего контроллера.

Обсуждение

Ваш комментарий. вики-синтаксис разрешён:
KLDRM
 
arxitektura.txt · Последние изменения: 2015/12/27 16:22 (внешнее изменение)