Управление информатизации. Отдел разработки программного обеспечения.
Разделы формируются на основании статических маршрутов, которые прописаны в config/routes.php.
Файл представляет собой массив где ключ - это url-запрос относительно дирректории проекта, а значение - это строка содержащая 2 элемента разделенные "/". Первый элемент представляет собой название файла контроллера, а второй элемент - название обработчика (метода) контроллера.
Контроллеры расположены в дирректории controllers. Название файла должно соответствовать первому элементу значения маршрута. Сам файл содержит класс контроллера. Название класса соответствует названию файла, начинается с большой буквы и заканчивается на "_C". Окончание свидетельствует о том, что класс представляет из себя контроллер.
Метод класса контроллера должен иметь такое же название, как и вторая часть значения маршрута с окончанием "Action". Также метод принимает массив параметров страницы, переданные из маршрута. Каждый класс контроллера должен наследовать исходный класс Controller.
К примеру зададим маршрут: "articles/([a-z-]+)/([0-9-]+)" => "articles/show/$1/$2"
. Под такой маршрут
подпадает url-запрос: /articles/sport/15.
В данном случае файл контроллера будет называться articles. Класс контроллера будет иметь название Articles_C, а метод, отвечающий за формирование страницы - showAction. Пример приведен ниже.
class Articles_C extends Controller
{
public function showAction( $args )
{
//При url-запросе "articles/sport/15" $args = ["sport", "15"];
}
}
Макеты храняться в директории templates/template([0-9-]+). В данной дирректории обязательно должны быть 2 файла: header.php и footer.php. Данные файлы подключаются при помощи:
Page::instance()->showHeader( 1 );
//Контент страницы
Page::instance()->showFooter( 1 );
Принимаемое значение это id подключаемого макета. Данный аргумент не является обязательным. По умолчанию подключается макет, id которого задан статически в классе Page (models/core/page.php).
За соединение с базой данных отвечает класс Core_Database.
Название таблицы объекта формируется на основании названия класса в нижнем регистре с окончанием "s" и префиксом, указанным в techsupport/config/config.php.
Параметры подключения к базе данных хранятся в стандартном мудловском config.php.
У каждого объекта, наследуемого от Core_Entity, существует метод queryBuilder, который возвращает объект конструктора SQL-запросов.
К примеру, необходимо выполнить SQL-запрос, возвращающий все статьи, которые были подтверждены:
$Article = Core::factory( "Article" ); //Создание объекта статьи
$confirmedArticles = $Article
->queryBuilder() //Вызов конструктора запроса
->where( "confirmed", "=", "1" ) //Указание условий выборки
->findAll(); //Метод, выполняющий запрос и возвращающий массив результатов
Все классы объявляются в отдельных файлах в директории models. Название класса должно, грубо говоря, представлять из себя путь к файлу с классом, относительно дирректории models. Каждое слово, разделенное нижним подчеркиванием, должно начинаться с большой буквы. К примеру класс в файле models/application/screenshot.php будет иметь название Application_Screenshot. Каждый объявляемый класс должен наследовать Core_Entity для возможности преобразования объектов класса в XML сущьности и работы с XSL-шаблонами.
Название всех свойств объекта должно соответствовать названию столбца в базе данных. Любые другие свойства объекта, не имеющие отношение к таблице в базе данных объявляются при помощи ассоциативного массива. Извиняюсь за такие неудобства, но есть что есть :( Обещаю исправиться.
Для работы со свойствами, хранящимися в таблице базе данных, лучше использовать сеттеры и геттеры дабы проверять тип значения, присваемого свойству.
Данный класс отвечает за поиск подходящего маршрута для url-запроса, подключение класса контроллера и вызов соответстввующего метода контроллера.
Класс обладает лишь одним свойством: $routes - список всех заданных маршрутов в файле config/routes.php
Данный класс отвечает за формирование параметров страницы и подключение макетов, также реализует шаблон проектирования Singleton. Доступ к методам и свойствам объекта данного класса происходит при помощи метода instance к примеру:
Page::instance()->setTitle( "Заголовок страницы" );
ORM (англ. Object-Relational Mapping, рус. объектно-реляционное отображение, или преобразование) — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных». Более подробно о том, что такое ORM можно найти источники в интернете.
В данной системе класс Orm выступает в роли конструктора SQL-запросов.
По умолчанию метод where обрамляет значение в одинарные кавычки. Для передачи значнеия в данный метод без обрамления их в кавычки необходимо воспользоваться статическим методом unchanged класса Core.
Core::factory( "Application_Screenshot" ); //Вернет новый объект класса Application_Screenshot
Core::factory( "Application_Screenshot", 4 ); //Вернет объект класса Application_Screenshot со значениями свойств,
//соответствующими записи в таблице с id = 4
Описание методов, реализующих шаблон проектирования «Наблюдатель» (Observer) и пример их использования описаны в моей статье РЕАЛИЗАЦИЯ ШАБЛОНА ПРОЕКТИРОВАНИЯ «НАБЛЮДАТЕЛЬ» НА PHP.