MyLuxe Framework: Разработка CMS для Golos
Разработка CMS для Golos. Архитектура и понятие Framework
Введение
CMS - это система управления контентом, которая используется для построения сайтов и управления его содержимым (текстами и другим медиаконтентом).
Framework - дословно Каркас. Набор сценариев на языке программирования, которые упрощают разработку сложных проектов по принципу "Зачем изобретать велосипед".
Фреймворк содержит набор готовых решений для програмиста.
Сегодня я расскажу о абсолютно новом проекте, разработку которого я начал год назад. Идея проекта предполагает создание бесплатной отечественной (в смысле что комментарии на
русском =)) CMS, которая бы не уступала по функционалу современным платным решениям в WEB.
Затем, после появления Голоса, я задумался о внедрении в ее состав, программного кода, позволяющего взаимодействовать с подобными блокчейн-технологиями.
Как основные рассматриваю Биткоин, Ethereum и Голос.
Как и в случае с моим курсом по созданию соцсети на PHP, мы будем подробно изучать код этой системы, что полезно как для изучения программированию на PHP, так и для знакомства с
этой системой для разработки компонентов под нее.
Стоит также отметить, что это второй подобный проект, которым я занимался в смысле разработки фреймворка. Первый по принципу ннапоминал YiiFramework, но после разработке
основной части системы, я начал замечать, что написанные мною скрипты генерации компонентов (в частности страниц, состоящих из 3 частей - модели, вида и контроллера) весьма
сложны для понимания, и при внесении изменений могуд давать сбой.
В новой версии, о которой речь пойдет в этом блоге в ближайшее время, за основу я использовал идею построения используемую в популярной российский CMS - Битрикс.
На самом деле код насписан полностью заново и не использует ни чего, что бы было в Битрикс. К тому же наш проект более компактен, так как там пока нет большого количества
компонентов и необходимых для их работы зависимостей (библиотек кода и классов). Поэтому изучение программированию на примере нашей CMS, думаю, будит намного проще. Но
изучив принцип работы с CMS здесь, в в дальнейшем сможете освоится и в упомянутой отечественной системе. Ну а мы после описания самой структуры и кода нашей CMS займемся
разработкой компонентов для взаимодействия с упомянутыми блокчейн-системами.
Назмание для своего проекта я придумал: MyLuxe Framework. Давайте разбираться с ним :)
Структура проекта MyLuxe Framework
Все ядро системы лежит в папке myluxe
.
Здесь разработчику наиболее интересен файл start.php - он подключается в начале любой страницы вашего проекта (если вам конечно нужен функционал MyLuxe):
<?php require_once $_SERVER['DOCUMENT_ROOT'].'/myluxe/start.php'; ?>
Таким способом мы можем подключать этот файл в любом файле нашего проекта, и естественно в index.php в корне сайта. Посмотрим, что в нем содержится:
Файл myluxe/start.php
<?php
//print '<p>Я файл старт. Я подключаю все библиотеки и компоненты main и admin, создаю переменную $pdo</p>';
/* Этот файл подключается в начале всех страниц MyLuxe */
/* Подключаем библиотеки с функциями для компонентов */
// Функции обеспечивают работу с запросами, БД и файловой системой
require_once $_SERVER['DOCUMENT_ROOT'].'/myluxe/lib/data_functions.php';
// Функции для работы с компонентами из других компонентов или файлов-страниц сайта
require_once $_SERVER['DOCUMENT_ROOT'].'/myluxe/lib/that_functions.php';
// Функции используемые внутри разрабатываемого компонента
require_once $_SERVER['DOCUMENT_ROOT'].'/myluxe/lib/this_functions.php';
// Настраиваем кодировку для работы с MySQL-запросами
$pdo = data_mysql_init();
$pdo->exec('SET NAMES utf8');
/* Подключаем основные компоненты */
// Подключаем компонент main - содержит основные сведения о сайте и используется другими компонентами
// that_add('main'); // deactivate template
// Шапка страницы
that_add('head');
// Выводит панель администратора отображает список компонентов и позволяет с ними работать
that_add('admin');
Как видите, я постарался документировать код, чтобы по нему можно было изучать Framework.
В начале подключаются три файла-библиотеки из директории lib (мы их обязательно рассмотрим подробно по мере изучения).
Затем мы устанавливаем соединение с базой данных, вызывая data_mysql_init()
для получения объекта PDO, с помощью которого мы и будем посылать запросы к БД.
Префикс data_
показывает, что данная функция находится в библиотечном файле data_functions.php, который мы подключили ранее.
Затем мы выполняем запрос к базе данных, чтобы установить подходящую нам кодировку: $pdo->exec('SET NAMES utf8');
.
С помощью that_add('componentname');
мы подключаем компоненты, в данном случае нам нужны head и admin, которые используются на всех страницах сайта.
Первый запуск CMS
Мы можем просто скопировать папку myluxe в директорию с нашим сайтам, например в моем случае amlx.loc/www/myluxe.
Затем в корневой (amlx.loc/www) создать index.php и подключить start.php как показано выше, однако мы получим исключение:
Дело в том, что в start.php как видно мы делаем запрос к базе данных, однако, у нас еще не создан файл настроек для этого - myluxe/config.ini.
Поэтому наш драйвер, вызываемый посредством data_mysql_init()
не знает как и куда подключаться к БД.
для решения этой задачи, как и в любой другой CMS есть два способа:
В ручную создать или отредактировать файл config.ini
Внутри конфига должно содержится, что-то вроде, следующего:
[database]
driver = mysql
host = localhost
schema = amlx
user = amlx
password = amlx
prefix = mlx2_
driver - это драйвер базы данных, к которой мы хотим использовать - чаще всего это MySQL или SQLite.
host - хост, на котором наша база данных (в нашем случае на том же, что и PHP-cgi).
schema - это имя базы данных
user - имя пользователя БД
password - пароль для доступа к базе данных
prefix - проефикс с которого будут начинаться имена всеч таблиц, генерируемые нашей CMS
Если необходимая БД у вас создана, то вы можете создать такой файл config.ini самостоятельно и загрузить (сохранить) его в директорию myluxe.
Воспользоваться скриптом инициализации системы /install/
Для пользователей часто более наглядно воспользоваться специальным интерфейсом, для первичной настройки системы.
В MyLuxe в корневой дирректосрии (там, где index.php) имеется папка с такими скриптами: install.
Таким образом, для настройки системы можно перейти по ссылке http://sitename.loc/inslall
и задать конфигурацию, выполнив несколько простых шагов.