Kohana для чайников. Hello world.

kohanaБыстренько пробежимся по самым верхушкам. Буквально галопом по европам.

Хоть и звучит легкомысленно, это позволит нам усвоить элементарные вещи, и даст возможность зацепиться за незнакомый мир Kohana.

URL в Kohana
————————
С самого начала нам нужно понять, как читать URL в Kohana, и начнём с самого простого. Для дальнейших рассуждений будем предполагать, что Kohana установлена на сервере http://localhost в папке kohana.

Кто работал с CodeIgniter — можете не читать этот раздел, всё то же самое.

В общем виде URL будет выглядеть примерно так

uri_explain
(изображение взято отсюда)

В этом примере

  • http://localhost/kohana/ — собственно базовый URL инсталляции kohana.
  • index.php — скрипт который обрабатывает любые запросы к сайту и перенаправляет их дальше, своего рода диспетчер. Ещё его называют фронт-контроллер.
  • welcome - пример названия контроллера. Что такое контроллер? — не уверен что смогу дать точное определение, но думаю что смогу показать простой пример простого контроллера, и всё встанет на свои места. Примеры смотреть ниже.
  • search — вызываемая функция контроллера
  • php — задаваемый параметр для функции. Параметр может быть один, их может быть несколько, также параметры могут отсутствовать.

Если указан контроллер, и не указана функция — будет предпринята попытка вызвать функцию index.

Если не указан контроллер — будет предпринята попытка вызывать контроллер по-умолчанию. После установки — это контроллер welcome.php.
Исправить контроллер по-умолчанию можно для Kohana 2 в файле application/config/routes.php. Если такого файла нет — скопируйте из system/config/routes.php. Если такого файла и там тоже нет — создайте сами application/config/routes.php и напишите там такой текст:

В Kohana3 для назначения контроллера по-умолчанию нужно редактировать application/bootstrap.php примерно следующим образом

Route::set('default', '((/(/)))')
	->defaults(array(
		'controller' => 'вашконтроллер',
		'action'     => 'index',
	));

Кстати с помощью несложных фокусов с Rewrite можно избавиться и от фронт-контроллера index.php в URL. Пример соответствующего файла .htaccess есть в архиве.

Kohana 2 «Hello, world!»
————————
Итак, наконец-то (к концу второго поста из цикла постов для чайников) мы наконец-то приблизились к написанию реально работающего кода. Мы попытаемся написать контроллер hello, который будет при обращении к http://localhost/index.php/hello выводить надпись «Hello, world!».

Для этого нам нужно будет создать файл application/controllers/hello.php и написать в нём следующий код


Разберём этот пример.

Первая строчка - дань безопасности. Она нужна, чтобы некий злоумышленник не мог обратиться к скрипту напрямую. Её просто нужно ставить в каждом PHP файле, который будете создавать в Kohana.

Далее в примере видим класс Hello_Controller, который наследуется от Controller. Надо сказать, что название класса контроллера должно быть именно таким по соглашению о наименованиях :

  • Файл контроллера должен называться прописными буквами
  • Класс контроллера должен начинаться с заглавной буквы и должен кроме названия контроллера иметь суффикс "_Controller"

И наконец мы видим тривиальную функцию index.

Если мы захотим обрабатывать URL http://localhost/index.php/hello/asdasdasd , то нам будет нужно добавить метод asdasdasd() в контроллер.


Методы контроллера соответствуют строкам URL

  • action_index()
    • http://localhost/kohana/
    • http://localhost/kohana/index.php/
    • http://localhost/kohana/index.php/index
  • action_asdasdasd()
    • http://localhost/kohana/index.php/asdasdasd

Kohana 3 "Hello, world!"
-----------------------
Здесь многое похоже, но есть ряд отличий.

  • Файл должен находиться в папке application/classes/controllers/hello.php
  • Название класса контроллера должно состоять из названия контроллера, начинающегося с заглавной буквы и префикса "Controller_"
  • Методы контроллера должны содержать обязательный префикс "action_". Смысл его я надеюсь уяснить в следующих постах.

В остальном всё остаётся так же как и в Kohana 2

Пока всё =)
Продолжение следует. Постараюсь надолго не исчезать.

UPD: Спасибо NosFire , нашёл вопиющую ошибку. Исправляюсь

Kohana для чайников. Hello world.: 7 комментариев

  1. Nayjest

    Ну-ну, жду дальнейших уроков )
    Кстати, могли бы все-таки написать, как убрать index.php из URL и думаю, стоило бы делать примеры сразу без него, чтобы это было что-то ближе к реальным проектам.

  2. NosFire

    Хоть и некропостинг, но:

    —> Но это можно исправить в файле application/config/route.php. Если такого файла нет – скопируйте из system/config/route.php. Если такого файла и там тоже нет – создайте сами application/config/route.php и напишите там такой текст

    По крайней мере в 2.3.4: файл routes.php, а не route.php

  3. altesack Автор записи

    @ NosFire:
    Опять моя ошибка. На этот раз серьёзная. Спасибо, исправляюсь

  4. graceman9

    >Файл должен находиться в папке ‘application/classes/controllers/hello.php’
    в Kohana 3 есть папка ‘application/classes/controller’ (без буквы ‘s’ на конце)

  5. Накукрыскин

    В 3-ей кохане при попытке использовать метод asdasdasd через url http://localhost/kohana/index.php/asdasdasd будет выдаваться ошибка. Из-за того, что метод asdasdasd является дочерним от контроллера Hello. Вызывать его надо следующим образом: http://localhost/kohana/index.php/hello/asdasdasd/ Тогда все будет ок.

  6. Дизайн студия ProGrafika

    Отличная статья, хорошо бы еще добавить о каталогах и более сложных роутах.
    Если не сложно добавьте о . Думаю многим начинающим будет полезно.

Комментарии запрещены.