Знакомимся с API ядра движка. Начало...

+9
2.26K
Поскольку любой сайт при обращении к домену начинает грузиться со странички "/index.html", то начинаем соответственно с него.
Суем нос в файл "/index.html".
Что видим:
Настройка сообщений об ошибках, установка локали, объявление путей
  1. Error_Reporting(E_ALL & ~E_NOTICE & ~E_WARNING);
  2. setlocale(LC_ALL, 'ru');
  3.  
  4. define('PATH', $_SERVER['DOCUMENT_ROOT']);
  5. define('HOST', 'http://' . $_SERVER['HTTP_HOST']);
смотрим дальше
  1. ////////////////////////////// Проверяем что система установлена /////////////////////////////
бла бла бла… конечно установлена, иначе чоб мы здесь делали… ;)
еще одно объявление. Запуск сессий...
  1. define("VALID_CMS", 1);
Таймеры для оценки быстродействия и получения текущего времени.
  1. /////////////////////////////////// Включаем таймер /////////////////////////////////////////
  2. $start_time = microtime();
  3. $start_array = explode(" ",$start_time);
  4. $start_time = $start_array[1] + $start_array[0];
О! Началось...
  1. ////////////////////////// Загружаем нужные классы //////////////////////////////////////////
  2.  
  3. include('core/cms.php'); //ядро
  4. include(PATH.'/includes/config.inc.php'); //конфиг, оставлен для старых плагинов
  5.  
  6. $inCore = cmsCore::getInstance();
  7.  
  8. $inCore->loadClass('page'); //страница
  9. $inCore->loadClass('config'); //конфигурация
  10. $inCore->loadClass('db'); //база данных
  11. $inCore->loadClass('plugin'); //плагины
  12. $inCore->loadClass('user'); //пользователь
  13.  
  14. $inDB = cmsDatabase::getInstance();
  15. $inPage = cmsPage::getInstance();
  16. $inConf = cmsConfig::getInstance();
  17. $inUser = cmsUser::getInstance();
  18.  
  19. cmsCore::loadLanguage('lang'); //главный языковый файл
  20.  
  21. if ( !$inUser->update() ) { $inCore->redirect('/404'); }
  22.  
  23. $home_title = $inConf->hometitle ? $inConf->hometitle : $inConf->sitename;
  24.  
  25. $inPage->setTitle( $inConf->sitename );
  26.  
Для тех кто еще не знаком с php объясняю: функциями include($filename) и require($filename) цепляется и исполняется еще один файл на php. Таки образом куски большого кода можно раскидать по подобным вставкам к основному скрипту (Впрочем злоупотреблять этим не следует, как поступили в Битриксе).
Итак мы видим: грузится и исполняется файл "/core/cms.php" и "PATH.’/includes/config.inc.php’", в комментах к которому написано, что он существует для совместимости со старыми версиями.
Дальше по тексту "index.html" у нас идет создание объекта $inCore через вызов функции у объекта cmsCore. Судя по всему cmsCore был создан в "/core/cms.php".
$inCore создали. Теперь начинаем с ним работать. Начинаем подгружать полезные классы для работы и создаем объекты этих классов для работы: соответственно $inDB, $inPage, $inConf, $inUser.
Теперь начинаем разбираться что у нас было "/core/cms.php" и откуда взялись эти классы...
Суем свой любопытный нос в "/core/cms.php"… После объявления в нем нескольких констант больше для документации видим
  1. "class cmsCore {"
вот пошло объявление класса cmsCore… Здесь теперь лучше всего взять нормальный редактор для php? который бы отображал в виде дерева все переменные, константы и методы класса и всего что лежит в этом файле.
Ой, чего-то Delfi для php как-то слишком все сложно отобразила… Очень много методов...
Ну ладно берем поиск и ищем метод "loadClass", которым у нас классы грузили. Находим:
  1. public function loadClass($class){
  2. $classfile = PATH.'/core/classes/'.$class.'.class.php';
  3. if (file_exists($classfile)){
  4. include_once($classfile);
  5. return true;
  6. }
  7. return false;
  8. }
Снова видим наш любимый include в вариации include_once, т.е. один раз. И видим что к названию класса ( полученного при вызове функции) при загрузке спереди пристыковывается папочка указывающая откуда брать скрипт для класса ("PATH.’/core/classes/’") и расширение ".class.php" с конца названия. Смотрим в папочку "/core/classes/"...
Точно. Там лежат файлики:
user.class.php
plugin.class.php
page.class.php
db.class.php
config.class.php

Теперь чтобы познакомиться с API ядра движка на осталось распотрошить эти файлики на лежащие в них функции и классы...
Для начала хватит. Дальше нужно каждый из этих файликов разбирать внимательно и отдельно...
;)
+2
Barrio Barrio 14 лет назад #
большое дело делаешь, молодец =)

Еще от автора

Шаблоны и Стили. Что InstantCMS нам выдает...
Зайдите на страничку вашего сайта InstantCMS. Через контекстное меню откройте код HTML страницы... Понятно что-нибудь?? Сомневаюсь...
Шаблоны и стили. Пролог
Снова предварительный пост. Мы будем разбираться в задачах, с которыми мы будем сталкиваться при работе с шаблонами, и которые нам придется решать.
А что у нас за Яваскрипты в стандартном шаблоне???
Вот прежде чем начинать возиться со стилями компонентов и шаблона целиком будет полезно посмотреть, а что у нас в шаблоне за Яваскрипты подключаются..
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.