Знакомство с Kohana 3.0 — Часть 1

http://www.dealtaker.com/blog/2009/11/20/kohana-php-3-0-ko3-tutorial-part-1/
  • Перевод
Давайте вначале убедимся, что у нас есть все необходимое:
  • установленные Apache, MySQL, PHP
  • знание PHP
  • знание понятия “фреймворк
  • знание понятия “MVC

Поехали!

Скачать:
Скачайте последний релиз Kohana 3.0 (на момент написания: 3.0.9)

Установить:
Распакуйте архив в любую временную папку. Откройте ее, там должна быть директория “kohana” или вроде того. Переименуйте эту директорию в “mykohana3” и переместите ее в корневую папку вашего веб-сервера. Поскольку я использую WAMP Server – у меня это “C:\wamp\www\”. Далее откройте в браузере “http://localhost/mykohana3/”. Должна отобразиться страница, уведомляющая, что все тесты пройдены успешно.

Если все в порядке, то удалите или переименуйте файл “install.php” в папке “mykohana3”. Затем откройте в текстовом редакторе “example.htaccess” и измените следующую строку:
RewriteBase /kohana/

на:
RewriteBase /mykohana3/

Сохраните его как “.htaccess”.

Теперь откройте файл “bootstrap.php”, который находится в папке “application” и измените:
Kohana::init(array('base_url' => '/kohana/'));

на:
Kohana::init(array('base_url'  => '/mykohana3/',
                   'index_file'=> ''));


Сохраните этот файл и обновите страницу в браузере. Должна появиться строка “hello, world!”.

Теперь приступим к созданию нашего первого контроллера! Откройте новый документ и поместите туда следующее:
<?php
defined('SYSPATH') or die('No direct script access.');
 
class Controller_Ko3 extends Controller
 {
    public function action_index()
     {
        $this->request->response = 'My First Kohana 3.0 Controller';
     }
 } // End

Сохраните его как “ko3.php” в папке “application/classes/controller”. Откройте в браузере “http://localhost/mykohana3/ko3″. Вы должны увидеть “My First Kohana 3.0 Controller” на экране.

Теперь пройдемся по коду.
defined('SYSPATH') or die('No direct script access.');

Строка выше запрещает обращаться к файлу напрямую. Он только может быть вызван из фреймворка.
class Controller_Ko3 extends Controller

Здесь создается контроллер, который представляет собой класс, наследующий Controller – встроенный класс фреймворка.
public function action_index()

Тут создается метод “action_index”. Он запускается фреймворком по умолчанию при вызове контроллера. Наподобие того как index.php запускается при открытии сайта в браузере.
$this->request->response = 'My First Kohana 3.0 Controller';

Это выведет на экран “My First Kohana 3.0 Controller”. По сути работает как “echo”.

Пока довольно легко, правда? Теперь, если вы захотите добавить в контроллер другой экшен, нужно создать public метод с префиксом “action_”. Чтобы обратиться к нему, откройте “http://localhost/mykohana3/{контроллер}/{экшен}”

Давайте создадим новый метод в контроллере “ko3″, добавив следующий блок после метода “action_index”:
public function action_another()
 {
    $this->request->response = 'Another action';
 }

Сохраните файл и откройте в браузере “http://localhost/mykohana3/ko3/another”. Должна появиться надпись “Another action”.

Теперь добавим немного интерактивности!

Скопируйте этот код и вставьте его после метода “action_another”:
public function action_dynamic($say)
 {
    $this->request->response = 'You said: '.$say;
 }

Сохраните файл и откройте в браузере “http://localhost/mykohana3/ko3/dynamic/Monkey”. Должна появиться надпись “You said: Monkey”

Постскриптум:
Это — перевод чужого материала.
Это — перевод чужого материала человеком, который только начинает изучать фреймворк.
Это — только первая часть знакомства.
Поделиться публикацией
Комментарии 37
    +32
    Какое то очень скромное знакомство.
      +1
      Это только первая часть.
        +3
        Полезно перед инсталляцией сообщить преимущества фреймворка и его отличия от аналогов
          –4
          Полезно уже знать различия основных средств разработки под интересующий язык
          0
          Надеюсь не забросите и переведете все 9 частей.
          0
          ну так это же первое свидание, чего вы ожидали...?
            0
            ну хотя-бы до «второй базы» хотелось бы… ))
          +1
          Мало, непонятно, материал уже устаревает.

          PS Но плюсик всё равно за кохану ставлю :)
            +20
            Повторюсь, не люблю я этот цикл.

            1. Статьи маленькие.
            2. Маловато подробностей. Вот например:
            Kohana::init(array('base_url' => '/mykohana3/',
            'index_file'=> ''));

            Не объясняется зачем, просто делайте и все! Вы сами знаете, зачем это?
            3. Используются выражения типа $this->request->response, но что они означают? Почему не просто echo? Получается все равно черный ящик, с которым приходится разбираться самостоятельно.
            4. Использовать параметры экшенов в контроллере считается некрасивым :) $this->request->param() в руки.
              0
              4. Использовать параметры экшенов в контроллере считается некрасивым :) $this->request->param() в руки.

              Кстати да, в 3.1 их объявили deprecated и обещают из 3.2 убрать совсем
                0
                Давно пора. Заранее объявленный порядок переменных в экшене убивает всю гибкость роутов.
                0
                Да я сам не в восторге, но это самый лучший мануал, который я сумел найти. И раз взялся, то постараюсь перевести все части.
                0
                Вообще-то можно было дать ссылку на документацию. Быть может кому будет интересно самостоятельно посмотреть.

                От себя добавлю — неофициальная документация (англ.)
                  0
                  Лучше бы описали изменения в Kohana 3.0.9 :)
                  Да, там теперь миленький userguide. На базе него изложить разработку простенького чего-нибудь.
                  Что-то в таком духе.
                    0
                    3.0.9 неинтересно — в основном багфиксы ))
                      +1
                      Лучше бы описали изменения в грядущей Kohana 3.1. Вот там действительно есть на что посмотреть. Сам сейчас основательно в ней копаюсь, если будет время — напишу статью
                        0
                        Верно. Было бы замечательно. Если не ошибаюсь, они там ORM перелопатили.
                          0
                          Не только это. Ещё для лучшего HMVC разделили класс Request на две части — Request и Response, добавили HTTP_ эксепшены, ну про лямбда-роуты наверно итак уже все знают, и т.д.
                            0
                            а где лежит 3.1? поковырялся — не нашел. Интересно было бы посмотреть на новый Request. Велосипеды не хочется изобретать. спасибо.
                              +1
                              Пока доступен только RC1 — github.com/kohana/kohana/tree/3.1-RC1, ну или можно скачать development-версию оттуда же (с гитхаба). Только имейте ввиду, что никакой документации по 3.1 пока нет, так что придётся копаться в исходниках, если захотите понять что там происходит
                                0
                                да, естественно, спасибо :)
                    • НЛО прилетело и опубликовало эту надпись здесь
                        +2
                        Нет, это совпадение, но на мой взгляд довольно удачное :)
                          0
                          И весьма заезженное, я бы сказал
                          +2
                          Я так и знала. В каждой статье про Кохану вспоминается наш прелестный украинский язык =)
                          Habrahabr поиск, "кохана любимая"
                          А ведь даже в Википедии написано:
                          Kohana на языке Сиу значит «быстрый». Также на японском языке имеет значение «маленький цветок», а на украинском «любимая» и имя известной косатки (Kohana) — все эти значения не имеют отношения к названию.
                          • НЛО прилетело и опубликовало эту надпись здесь
                          0
                          как то больно скромно
                            +3
                            У меня вопрос к тем кто юзал YII и Kohana, что из них проще, и что более актуально?
                              +1
                              Кохана проще. Оба актуальны. Yii гибче.
                                0
                                Я юзал Codeigniter — сделал сайт на нём. Сайт с нуля, впринципе, разрабатывается быстро.
                                Потом решил попробовать Kohana, но так и «неасилил» (времени не было, лениво было).
                                Сейчас взялся за Yii — мне очень понравился этот фреймворк, особенно после прочтения книги «Agile Web Application Development with Yii 1.1 and PHP5».
                                  0
                                  Из forum.kohanaframework.org/discussion/comment/51176/#Comment_51176
                                  Лично мне довелось достаточно серьезно (не на кабинетных проектах) поработать как с Yii так и с KO3.

                                  Что характерного хотелось бы отметить сравнивая эти две оболочки:

                                  1. KO3 почти в два раза меньше потребляет памяти на ~ одинаковых веб-приложениях.
                                  2. У Yii большая часть основного и расширяемого функционала — практически из коробки.
                                  3. KO3 свойственна несколько высшая устойчивость к просадкам в производительности при изменении нагруженности ресурса.
                                  4. Приложения на KO3 намного проще в масштабировании, особенно в свете грядущих изменений в архитектуре по части Request.
                                • НЛО прилетело и опубликовало эту надпись здесь
                                    0
                                    На сколько я понимаю, это первая част перевода. Так почему бы не привести ссылку на целый оригинал?

                                    Я в своё время подсел Kohana 2.3, прочитав статью «Kohana 101», которой был очень доволен. Очень дал подобного по Kohana 3…
                                      0
                                      Ссылка есть, под статьей.
                                        0
                                        Это не первая часть перевода, а полный перевод первой части туториала.
                                        –2
                                        После упоминания в статье WAMP, читать дальше желание отпадает напрочь
                                          0
                                          Не сочтите за самопиар, но здесь уже есть перевод данного цикла (кроме последней статьи, которая будет в ближайшее время). Так что получается рерайтинг.

                                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                          Самое читаемое