Содержание

Kohana

Kohana устарела и больше не поддерживается, разработка прекращена. Используйте другие современные фреймверки. Удачи!

Ниже рассматривается Kohana версии 3.3.0(stable) и выше.

Kohana PHP5 Framework использует модель MVC (Model-View-Controller). Установка фреймворка Kohana проста, достаточно запустить из корня файл install.php, который проверит права на директории logs, cache

chmod 0777 application/cache
chmod 0777 application/logs

и проверит установлены ли необходимые зависимости PHP. После устранения всех ошибок файл install.php нужно удалить и комментировать в index.php строки:

if (file_exists('install'.EXT))
{
	// Load the installation check
	return include 'install'.EXT;
}

После установки фреймворка работает только ссылка http://your.domen/index.php/welcome/index .

FAQ Kohana 3.3+

Объекты Request, Response, GET, POST

Объект Request - один из основных элементов ядра фреймворка. В Kohana 3.2 он выполняет следующие задачи:

По сути, объект Request выполняет контроль над выполнением приложения, от получения клиентских данных до генерации сервером ответа.

Объект Validation

Объект класса Validation служит для проверки данных полученных от пользователя, например при помощи HTTP Метод HTTP POST запроса.

Хелперы

Хелперы (Helpers — помощники) - вспомогательные функции доступные в любом месте приложения на Kohana.

Класс HTML:

Класс Form:

Модули

Универсальный git репозитарий для Kohana - содержит ссылки на актуальные репозитории со сторонними модулями и ядром системы.

PDF

Mодуль database (PDO)

Настройка Kohana 3.3.0 для работы с базой данный Использование и настройка PostgreSQL c использованием технологии PDO PHP.

Обязательно укажите строку 'identifier' ⇒ '"', если вы используете PDO PHP, ORM и Использование и настройка PostgreSQL версии >= 9.1, в связи с изменением Lexical Structure. В противном случае будет возникать ошибка: Database_Exception [ 42601 ]: SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near "."

Модуль auth

Модуль Auth. При использование ORM роль Login должна быть назначена всем без исключения пользователям иначе авторизация не пройдет (это требование можно использовать для блокировки пользователя).

Модуль Captcha

Классы

Класс I18n

Класс i18n Интернационализация. В Kohana существует функция

__()

для перевода небольших объемов текста. Например, предварительно в каталоге application/i18n/ должны быть созданы и заполнены файлы переводов en.php, ru.php, uk.php

        <!--Russian-->
        <?php I18n::lang('ru');
        echo __('message');?>
        <!--English-->
        <?php I18n::lang('en');
        echo __('message');?>
        <!--Ukrainian-->
        <?php I18n::lang('uk');
        echo __('message');?>

Класс HTTP

В версии Kohana 3.2 для перенаправления использовался метод объекта Request→redirect(), в версии выше этот функционал перенесен в класс HTTP.

Kohana и 404 Not Found

В Kohana можно использовать свой обработчик Коды состояния HTTP. Методы и структура протокола HTTP ошибок. Создадим обработчик самой распространенной ошибки HTTP 404 Not Found. И укажем ему срабатывать только если переменная Kohana::$environment равна константе PRODUCTION, в любом другом случае запускать системный обработчик ошибок.

  1. Переопределяем переменную Kohana::$environment(по умолчанию значение DEVELOPMENT) при помощи файле Настройка .htaccess, дописав в него строку
    SetEnv KOHANA_ENV PRODUCTION

    Вместо .htaccess можно переопределять непосрдственно в bootstrap.php.

  2. Создаем два файла для обработки 404 ошибки application/classes/HTTP/Exception/404.php и application/views/Errors/404.php. Route::set создавать не надо.
    $ nano application/classes/HTTP/Exception/404.php
    <?php defined('SYSPATH') OR die('No direct script access.');
    
    class HTTP_Exception_404 extends Kohana_HTTP_Exception_404 {
    
        public function get_response() {
            // Lets log the Exception, Just in case it's important!
            Kohana_Exception::log($this);
    
            if (Kohana::$environment >= Kohana::DEVELOPMENT) {
                // Show the normal Kohana error page.
                return parent::get_response();
            } else {
    
                $view = View::factory('Errors/404');
    
                // Remembering that `$this` is an instance of HTTP_Exception_404
                $view->message = $this->getMessage();
    
                $response = Response::factory()
                        ->status(404)
                        ->body($view->render());
    
                return $response;
            }
        }
    
    }
    $ nano application/views/Errors/404.php
    <br />
    <h2>404 Not Found</h2>
    <br />
    <?= $message ?>
    <br />

Kohana подключение своих функций

Иногда возникает потребность подключить(автоподключить) свои функции к Kohana. Наиболее оптимальный и правильный способ это оформить свои пользовательские функции в виде статических методов класса и использовать автоматический загрузчик Kohana. Например, создадим класс DFunction в файле DFunction.php

<?php
class DFunction {

    static function detectlanguage() {
        $langcode = explode(";", $_SERVER['HTTP_ACCEPT_LANGUAGE']);
        $langcode = explode(",", $langcode['0']);
        return $langcode['0'];

        /* Example for use
         * $language = DFunction::detectlanguage();
         * echo "You have chosen $language as your language in your web browser.";
         */
    }

}

Чтобы класс подключился автоматически в ядро Kohana - файл DFunction.php должен находиться в директории classes (допускается использовать поддиректории, но в этом случае нужно поменять соответственно имя класса),