Создание своей PHP CMS на основе модулей и шаблонов Часть 2 — Ядро

Продолжая эпическую сагу про создании своей CMS (системы управления веб сайтом) мы подобрались к созданию ядра, иначе говоря основы на которой всё будет крепиться. Или как некоторые говорят движка.

Создадим в директории /panel/core/ файл APPLICATION.php. Это файл содержит основные функции для работы админской части.

Добавим в него класс  APPLICATION, функцию инициализации и соединения с базой данных.

<!--?php if (!defined('ACCESS')) die('ACCESS_DENIED'); /** * Основной класс системы, содержащий методы, для соединения с базой даных, инициализации системы, модулей, * */ class APPLICATION { /** * * Линк соединения с базой данных * @var DBlink */ public $db_link; // Линк соединения с базой public $view_name; private function dbconn() { global $_SETTINGS; $this--->db_link = mysql_connect ( $_SETTINGS ['dbhost'], $_SETTINGS ['dbuser'], $_SETTINGS ['dbpass'] );
if ($this->db_link == false) {
die ( DB_CONNECT_ERROR );
}
if (mysql_select_db ( $_SETTINGS ['dbname'] ) == false) {
die ( DB_SELECT_ERROR );
}
mysql_query ( "SET character_set_client = '" . $_SETTINGS ['db_charset'] . "'" );
mysql_query ( "SET character_set_connection = '" . $_SETTINGS ['db_charset'] . "'" );
mysql_query ( "SET character_set_results = '" . $_SETTINGS ['db_charset'] . "'" );
mysql_query ( "SET NAMES '" . $_SETTINGS ['db_charset'] . "'" );

}

/**
* Производит инициализацию приложения (исполняет функцию установления соединения с базой, инициализирует модули).
*
* Данная функция должна быть выполнена раньше других скриптов.
* Параметр $vcontent необходим для указания места вызова функции. Передается в функцию инициализации модулей module_init ( $vcontent )
* Принимает значения true или fasle
* Значения true устанавливается , если необходимо инициализировать как активные так и неактивные модули
* Значение false устанавливается как правило для клиентской части, и тогда функция инициализирует только активные модули.
*
* */

public function init($vcontent = true) {

global $_SETTINGS;

if ($_SETTINGS ['debugging']) {

error_reporting ( $_SETTINGS ['error_level'] );

}

$this->dbconn ();

}

}

$APPLICATION = new APPLICATION ();
?>

Итак у нас есть основной класс. Пока он только умеет соединяться с базой данных и контролировать вывод ошибок php в нашей системе управления сайтом. Контроль производится путём редактирования файла conf.php.

Функция dbconn() выполняет соединение с базой данных, и устанавливает необходимые кодировка для соединения и данных, указанных в conf.php.

$APPLICATION = new APPLICATION (); — создаём экземпляр класса.

Наша программа (CMS) будет иметь 3 точки входа. 1-я это в админ панели, файл index.php 2-я файл index.php в корне сайта. 3-я файл login.php в админской части сайта.

Начнём с админ панели. Пропишем в файле index.php следующие строки:

 

<p><!--?php session_start(); define('ACCESS', 1); include 'config.php'; include 'core/APPLICATION.php'; include_once 'stack.php'; // Инициализируем систему и модули $APPLICATION--->init(true);</p>
<p>?><br />

session_start(); — начинаем сессию
define(‘ACCESS’, 1); — обьявляем константу доступа. С ней не будет возможным прямой доступ к файлам системы. Для этого необходимо в каждом файле *.php прописать следующую строку:
if (!defined(‘ACCESS’)) die(‘ACCESS_DENIED’);
При попытке прямого доступа к файлам нашей CMS, у которых имеется данная строчка, будет прекращено выполнение скрипта и выведено сообщение об ошибке доступа. Поэтому добавим в наш файл APPLICATION.php эту строку.

$APPLICATION->init(true); — выполнение этой строчки производит соединение с базой данных. В дальнейшем мы немного дополним нашу функцию.

Систему я посадил на созданный локальный хост. У меня это alexa.lk. Обратимся к системе через браузер http://alexa.lk/panel/. Если всё поло правильно то у нас должен открыться пустой экран. Это означает что соединение  с сервером баз и выбор базы данных прошёл успешно.Проолжение следует

Все файлы можно скачать тут

 

 

Добавить комментарий