Вітаю вас мої вельмишановні читачі! Цією статтею я починаю цикл статей по створенню блогу на улюбленому мною фреймворку Kohana 3.
Відразу хотів би зазначити, про те, що в цих статтях я не буду пояснювати основи побудови веб додатків, а так же html, css і php. Основна моя мета познайомити вас з фреймворком Kohana 3, а так само дати вам приклад того як треба писати програми на Kohana 3.2.
І так приступимо ...
1. Постановка завдання
Як видно із заголовка ця частина статті присвячена опису завдання, яку ми будемо вирішувати протягом усього циклу статей. І так що ж буде вміти робити наш додаток?
Панель Адміністратора:
- Зміна налаштувань блогу (зміна).
- Управління користувачами (Додавання, Видалення, Зміна, Налаштування прав).
- Управління тегами (Додавання, Видалення, Зміна).
- Управління рубриками деревовидної структури (Додавання, Видалення, Зміна).
- Управління постами (Додавання, Видалення, Зміна, Попередній перегляд).
- Модерування коментарів (Видалення, Зміна).
Публічна частина блогу:
- Висновок постів в форматі списку анонсів
- На головній (Від нових до старих)
- Рубрики постів (Від нових до старих)
- Тега поста (Від нових до старих)
- Введення сторінки поста
- Додавання коментарів до посту
2. Проектування БД
Для проектування БД я звик використовувати інструмент MySQL Workbench, тому я просто покажу вам вийшла схему структури БД у вигляді скріншоту або ви можете завантажити її в місці, з вихідними кодами в кінці статті.
Дана Тузла дозволяє нам зробити експорт моделі БД в sql скрипт або імпортувати структуру БД на сервер безпосередньо зробите це відразу, БД знадобиться нам далі.
3. Установка і настройка фреймворка Kohana 3.2
Як локального сервера я буду використовувати DENWER (нічого особистого просто я до нього звик).
Для початку скачайте фремворк kohana 3.2 c офіційного сайту тут і розпакуємо вміст архіву в кореневу директорію localhost.
Я сподіваюся, що ви вже запустили локальний сервер і localhost у вас доступний з браузера. Давайте відкриємо в браузері http: // localhost /. Якщо ви бачите те, що представлено на зображенні нижче, то вам пощастило, і сервер у вас задовольняє цим вимогам фреймворка в іншому випадку вам потрібно доводити конфігурацію сервера до розуму що як ви, напевно, здогадалися виходить за рамки поточної статті і пояснюватися тут не буде.
Наступним кроком нам потрібно видалити всяке сміття з кореня (install.php, LICENSE.md, README.md) і перейменувати файл example.htaccess в .htaccess, в результаті ми отримаємо:
Від сміття, який міг нас "видати" ми позбулися і тепер нам потрібно налаштувати додаток. Для цього відкриваємо файл application \ bootstrap.php в улюбленому текстовому редакторі (якщо вам цікаво, то я використовую PHPStorm 3) і налаштовуємо приблизно так:
<? Php defined ( 'SYSPATH') or die ( 'No direct script access.'); // - Environment setup -------------------------------------------- ------------ // Load the core Kohana class require SYSPATH.'classes / kohana / core'.EXT; if (is_file (APPPATH.'classes / kohana'.EXT)) {// Application extends the core require APPPATH.'classes / kohana'.EXT; } Else {// Load empty core extension require SYSPATH.'classes / kohana'.EXT; } / ** * Set the default time zone. * * @See http://kohanaframework.org/guide/using.configuration * @see http://php.net/timezones * / date_default_timezone_set ( 'Asia / Krasnoyarsk'); / ** * Set the default locale. * * @See http://kohanaframework.org/guide/using.configuration * @see http://php.net/setlocale * / setlocale (LC_ALL, 'ru_RU.utf-8'); / ** * Enable the Kohana auto-loader. * * @See http://kohanaframework.org/guide/using.autoloading * @see http://php.net/spl_autoload_register * / spl_autoload_register (array ( 'Kohana', 'auto_load')); / ** * Enable the Kohana auto-loader for unserialization. * * @See http://php.net/spl_autoload_call * @see http://php.net/manual/var.configuration.php#unserialize-callback-func * / ini_set ( 'unserialize_callback_func', 'spl_autoload_call'); // - Configuration and initialization ----------------------------------------- / * * * Set the default language * / I18n :: lang ( 'ru-ru'); / ** * Set Kohana :: $ environment if a 'KOHANA_ENV' environment variable has been supplied. * * Note: If you supply an invalid environment name, a PHP warning will be thrown * saying "Could not find constant Kohana :: <INVALID_ENV_NAME>" * / if (isset ($ _ SERVER [ 'KOHANA_ENV'])) {Kohana :: $ environment = constant ( 'Kohana ::'. strtoupper ($ _ SERVER [ 'KOHANA_ENV'])); } / ** * Initialize Kohana, setting the default options. * * The following options are available: * * - string base_url path, and optionally domain, of your application NULL * - string index_file name of your index file, usually "index.php" index.php * - string charset internal character set used for input and output utf-8 * - string cache_dir set the internal cache directory APPPATH / cache * - boolean errors enable or disable error handling TRUE * - boolean profile enable or disable internal profiling TRUE * - boolean caching enable or disable internal caching FALSE * / Kohana :: init (array ( 'base_url' => '/',)); / ** * Attach the file write to logging. Multiple writers are supported. * / Kohana :: $ log-> attach (new Log_File (APPPATH.'logs ')); / ** * Attach a file reader to config. Multiple readers are supported. * / Kohana :: $ config-> attach (new Config_File); Kohana :: $ config-> attach (new Config_Database); / ** * Enable modules. Modules are referenced by a relative or absolute path. * / Kohana :: modules (array ( 'auth' => MODPATH.'auth ', // Basic authentication //' cache '=> MODPATH.'cache', // Caching with multiple backends // 'codebench' => MODPATH.'codebench ', // Benchmarking tool' database '=> MODPATH.'database', // Database access // 'image' => MODPATH.'image ', // Image manipulation' orm '=> MODPATH.' orm ', // Object Relationship Mapping //' unittest '=> MODPATH.'unittest', // Unit testing // 'userguide' => MODPATH.'userguide ', // User guide and API documentation)); / ** * Set the routes. Each route must have a minimum of a name, a URI and a set of * defaults for the URI. * / Route :: set ( 'default', '(<controller> (/ <action> (/ <id>)))') -> defaults (array ( 'controller' => 'welcome', 'action' = > 'index',));
На наступному кроці нам потрібно налаштувати з'єднання з БД для чого копіюємо файл з директорії modules \ database \ config \ database.php в application \ config \ database.php і вносимо в нього свої настройки для підключення до БД.
<? Php defined ( 'SYSPATH') or die ( 'No direct access allowed.'); return array ( 'default' => array ( 'type' => 'mysql', 'connection' => array (/ ** * The following options are available for MySQL: * * string hostname server hostname, or socket * string database database name * string username database username * string password database password * boolean persistent use persistent connections? * array variables system variables as "key => value" pairs * * Ports and sockets may be appended to the hostname. * / 'hostname' = > 'localhost', 'database' => 'kohana_blog', 'username' => 'root', 'password' => FALSE, 'persistent' => FALSE,), 'table_prefix' => '', 'charset' => 'utf8', 'caching' => FALSE, 'profiling' => TRUE,),);
Ну, ось власне і все що від нас вимагалося, на цьому прекрасному моменті я хотів би закінчити цю статтю, до зустрічі в наступних статтях, в яких ми перейдемо безпосередньо до розробки програми.
Завантажити вихідні коди уроку.
І так що ж буде вміти робити наш додаток?Lt;?