Framework kohana

Modules

  1. Kohana

    1. Debug
    2. HTTP_Cache
    3. I18n
    4. Kohana
    5. Kohana_Config_Writer
    6. Request
    7. Request_Client
    8. Request_Client_Curl
    9. Request_Client_External
    10. Request_Client_HTTP
    11. Request_Client_Internal
    12. Request_Client_Stream
    13. Response
    14. Route
    15. UTF8
    16. View
  2. Configuration

    1. Config
    2. Config_File
    3. Config_Group
    4. Kohana_Config_File_Reader
    5. Kohana_Config_Reader
    6. Kohana_Config_Source
  3. Controller

    1. Controller
    2. Controller_Template
    3. Controller_Welcome
  4. Exceptions

    1. HTTP_Exception
    2. HTTP_Exception_300
    3. HTTP_Exception_301
    4. HTTP_Exception_302
    5. HTTP_Exception_303
    6. HTTP_Exception_304
    7. HTTP_Exception_305
    8. HTTP_Exception_307
    9. HTTP_Exception_400
    10. HTTP_Exception_401
    11. HTTP_Exception_402
    12. HTTP_Exception_403
    13. HTTP_Exception_404
    14. HTTP_Exception_405
    15. HTTP_Exception_406
    16. HTTP_Exception_407
    17. HTTP_Exception_408
    18. HTTP_Exception_409
    19. HTTP_Exception_410
    20. HTTP_Exception_411
    21. HTTP_Exception_412
    22. HTTP_Exception_413
    23. HTTP_Exception_414
    24. HTTP_Exception_415
    25. HTTP_Exception_416
    26. HTTP_Exception_417
    27. HTTP_Exception_500
    28. HTTP_Exception_501
    29. HTTP_Exception_502
    30. HTTP_Exception_503
    31. HTTP_Exception_504
    32. HTTP_Exception_505
    33. HTTP_Exception_Expected
    34. HTTP_Exception_Redirect
    35. Kohana_Exception
    36. Request_Client_Recursion_Exception
    37. Request_Exception
    38. Session_Exception
    39. UTF8_Exception
    40. Validation_Exception
    41. View_Exception
  5. HTTP

    1. HTTP
    2. HTTP_Header
    3. HTTP_Message
    4. HTTP_Request
    5. HTTP_Response
  6. Helpers

    1. Arr
    2. Cookie
    3. Date
    4. Feed
    5. File
    6. Form
    7. Fragment
    8. HTML
    9. Inflector
    10. Num
    11. Profiler
    12. Task_Help
    13. Text
    14. URL
    15. Upload
  7. Logging

    1. Log
    2. Log_File
    3. Log_StdErr
    4. Log_StdOut
    5. Log_Syslog
    6. Log_Writer
  8. Minion

    1. Minion_Exception
    2. Minion_Exception_InvalidTask
  9. Models

    1. Model
  10. Security

    1. Encrypt
    2. Encrypt_Mcrypt
    3. Encrypt_Openssl
    4. Security
    5. Valid
    6. Validation
  11. Session

    1. Session
    2. Session_Cookie
    3. Session_Native

Kohana/Auth

  1. Auth
  2. Auth_File
  3. Auth_ORM
  4. Model_Auth_Role
  5. Model_Auth_User
  6. Model_Auth_User_Token
  7. Model_Role
  8. Model_User
  9. Model_User_Token

Kohana/Cache

  1. Cache
  2. Cache_Apc
  3. Cache_Apcu
  4. Cache_Arithmetic
  5. Cache_Exception
  6. Cache_File
  7. Cache_GarbageCollect
  8. Cache_Memcache
  9. Cache_MemcacheTag
  10. Cache_Memcached
  11. Cache_Sqlite
  12. Cache_Tagging
  13. Cache_Wincache

Kohana/Codebench

  1. Codebench

Controllers

  1. Controller_Codebench

Tests

  1. Bench_ArrCallback
  2. Bench_AutoLinkEmails
  3. Bench_DateSpan
  4. Bench_ExplodeLimit
  5. Bench_GruberURL
  6. Bench_LtrimDigits
  7. Bench_MDDoBaseURL
  8. Bench_MDDoImageURL
  9. Bench_MDDoIncludeViews
  10. Bench_StripNullBytes
  11. Bench_Transliterate
  12. Bench_URLSite
  13. Bench_UserFuncArray
  14. Bench_ValidColor
  15. Bench_ValidURL

Kohana/Database

  1. DB
  2. Database
  3. Database_Expression

Configuration

  1. Config_Database
  2. Config_Database_Reader
  3. Config_Database_Writer

Drivers

  1. Database_MySQLi
  2. Database_PDO

Exceptions

  1. Database_Exception

Models

  1. Model_Database

Query

  1. Database_Query
  2. Database_Query_Builder
  3. Database_Query_Builder_Delete
  4. Database_Query_Builder_Insert
  5. Database_Query_Builder_Join
  6. Database_Query_Builder_Select
  7. Database_Query_Builder_Update
  8. Database_Query_Builder_Where

Query/Result

  1. Database_MySQLi_Result
  2. Database_Result
  3. Database_Result_Cached

Session

  1. Session_Database

Kohana/Image

  1. Image

Drivers

  1. Image_GD
  2. Image_Imagick

Kohana/ORM

  1. ORM
  2. ORM_Validation_Exception

Kohana/UnitTest

  1. Unittest_Database_TestCase
  2. Unittest_Tests

Kohana/Userguide

  1. Kodoc
  2. Kodoc_Class
  3. Kodoc_Markdown
  4. Kodoc_Method
  5. Kodoc_Method_Param
  6. Kodoc_Property

Controller

  1. Controller_Userguide

Undocumented

  1. Kodoc_Missing
  1. Minion_CLI
  2. Minion_Task
  3. Unittest_Helpers
  4. Unittest_TestCase
  5. Unittest_TestSuite

Три главных плюса CMF

Если от фреймворков не было особой пользы, то никто бы не решился использовать их в своих проектах — жизнь современного разработчика и так достаточно тяжела. Из наиболее ощутимых плюсов CMF можно выделить:

  1. Оптимизированный код. Над фреймворками трудятся разработчики, уделяющие оптимизации достаточно много времени.
  2. Скажи «нет» велосипедам. Как правило, в фреймворке уже имеются готовые решения для типичных задач. Тут тебе и структура папок, и вспомогательные библиотеки, и куча всяких вкусностей. Многие вещи изначально готовы к работе и позволяют разработчику сразу приступить к разработке функционала приложения, не развлекаясь написанием кучи рутинного кода.
  3. Упрощенная командная работа. Если проект разрабатывается целой командой, то применение CMF (особенно популярного) дает ощутимый плюс при появлении в команде новенького. Ему будет проще включиться в проект, так как для этого необходимо ознакомиться с CMF, по которому наверняка написано множество статей и мануалов.

Kohana 3.0 — упрощаем себе жизнь

Фреймворк — это хорошо, это здорово, это возможность сэкономить кучу времени на раздумьях над архитектурой будущего приложения, но… Фреймворк как таковой — это каркас. И, на примере Kohana 3.0, о которой в данной статье пойдет речь, каркас этот надо, в той или иной степени, допиливать.
Теперь давайте по-порядку, чем мы сейчас займемся:

  • -Расширим базовый контроллер, добавив в него жизненно необходимые методы и работу с юзерами (которая присутствует в 99% проектов, хотя бы на уровне административного логина)
  • -Создадим свой фронт-контроллер для более удобной и красивой работы с вью-файлами
  • -Реализуем вывод ошибок валидации через фронт-контроллер
  • -Улучшим базовый класс View
  • -Ну и еще кое-какие полезные мелочи

Итак, начнем…

Modules

  1. Kohana

    1. Debug
    2. HTTP_Cache
    3. I18n
    4. Kohana
    5. Kohana_Config_Writer
    6. Kohana_Core
    7. Request
    8. Request_Client
    9. Request_Client_Curl
    10. Request_Client_External
    11. Request_Client_HTTP
    12. Request_Client_Internal
    13. Request_Client_Stream
    14. Response
    15. Route
    16. UTF8
    17. View
  2. Configuration

    1. Config
    2. Config_File
    3. Config_Group
    4. Kohana_Config_File_Reader
    5. Kohana_Config_Reader
    6. Kohana_Config_Source
  3. Controller

    1. Controller
    2. Controller_Template
    3. Controller_Welcome
  4. Exceptions

    1. HTTP_Exception
    2. HTTP_Exception_400
    3. HTTP_Exception_401
    4. HTTP_Exception_402
    5. HTTP_Exception_403
    6. HTTP_Exception_404
    7. HTTP_Exception_405
    8. HTTP_Exception_406
    9. HTTP_Exception_407
    10. HTTP_Exception_408
    11. HTTP_Exception_409
    12. HTTP_Exception_410
    13. HTTP_Exception_411
    14. HTTP_Exception_412
    15. HTTP_Exception_413
    16. HTTP_Exception_414
    17. HTTP_Exception_415
    18. HTTP_Exception_416
    19. HTTP_Exception_417
    20. HTTP_Exception_500
    21. HTTP_Exception_501
    22. HTTP_Exception_502
    23. HTTP_Exception_503
    24. HTTP_Exception_504
    25. HTTP_Exception_505
    26. Kohana_Exception
    27. Request_Exception
    28. Session_Exception
    29. UTF8_Exception
    30. Validation_Exception
    31. View_Exception
  5. HTTP

    1. HTTP
    2. HTTP_Header
    3. HTTP_Message
    4. HTTP_Request
    5. HTTP_Response
  6. Helpers

    1. Arr
    2. CLI
    3. Cookie
    4. Date
    5. Feed
    6. File
    7. Form
    8. Fragment
    9. HTML
    10. Inflector
    11. Num
    12. Profiler
    13. Text
    14. URL
    15. Upload
  7. Logging

    1. Log
    2. Log_File
    3. Log_StdErr
    4. Log_StdOut
    5. Log_Syslog
    6. Log_Writer
  8. Models

    1. Model
  9. Security

    1. Encrypt
    2. Security
    3. Valid
    4. Validation
  10. Session

    1. Session
    2. Session_Cookie
    3. Session_Native

Kohana/Auth

  1. Auth
  2. Auth_File
  3. Auth_ORM
  4. Model_Auth_Role
  5. Model_Auth_User
  6. Model_Auth_User_Token
  7. Model_Role
  8. Model_User
  9. Model_User_Token

Kohana/Cache

  1. Cache
  2. Cache_Apc
  3. Cache_Arithmetic
  4. Cache_Exception
  5. Cache_File
  6. Cache_GarbageCollect
  7. Cache_Memcache
  8. Cache_MemcacheTag
  9. Cache_Sqlite
  10. Cache_Tagging
  11. Cache_Wincache

Kohana/Codebench

  1. Codebench

Controllers

  1. Controller_Codebench

Tests

  1. Bench_ArrCallback
  2. Bench_AutoLinkEmails
  3. Bench_DateSpan
  4. Bench_ExplodeLimit
  5. Bench_GruberURL
  6. Bench_LtrimDigits
  7. Bench_MDDoBaseURL
  8. Bench_MDDoImageURL
  9. Bench_MDDoIncludeViews
  10. Bench_StripNullBytes
  11. Bench_Transliterate
  12. Bench_URLSite
  13. Bench_UserFuncArray
  14. Bench_ValidColor
  15. Bench_ValidURL

Kohana/Database

  1. DB
  2. Database
  3. Database_Expression

Configuration

  1. Config_Database
  2. Config_Database_Reader
  3. Config_Database_Writer

Drivers

  1. Database_MySQL
  2. Database_PDO

Exceptions

  1. Database_Exception

Models

  1. Model_Database

Query

  1. Database_Query
  2. Database_Query_Builder
  3. Database_Query_Builder_Delete
  4. Database_Query_Builder_Insert
  5. Database_Query_Builder_Join
  6. Database_Query_Builder_Select
  7. Database_Query_Builder_Update
  8. Database_Query_Builder_Where

Query/Result

  1. Database_MySQL_Result
  2. Database_Result
  3. Database_Result_Cached

Session

  1. Session_Database

Kohana/Image

  1. Image

Drivers

  1. Image_GD
  2. Image_Imagick

Kohana/ORM

  1. ORM
  2. ORM_Validation_Exception

Kohana/UnitTest

  1. Unittest_Database_TestCase
  2. Unittest_Tests

Kohana/Userguide

  1. Kodoc
  2. Kodoc_Class
  3. Kodoc_Markdown
  4. Kodoc_Method
  5. Kodoc_Method_Param
  6. Kodoc_Property

Controllers

  1. Controller_Userguide

Undocumented

  1. Kodoc_Missing
  1. Unittest_Helpers
  2. Unittest_TestCase
  3. Unittest_TestSuite

Memcached и метки. Реализация для фреймворка Kohana

Приветствую всех.
Уже довольно давно разрабатываем проект на кохане и встала необходимость эффективного кэширования данных. Не то, чтобы вопрос производительности стоит очень остро в данный момент, но, хотелось бы подготовится заранее, а не писать систему кэширования в ночь после волны посетителей. Да и посещаемость постоянно растет, а в некоторые моменты бывают всплески до 3х раз по сравнению с обычным днем.
Собственно, в выборе системы кэширования особых вопросов не было — на ум сразу приходит всем известный memcached.
Если вы хотя бы немного смотрели memcached, то должны были отметить, что, по большому счету, он поддерживает только 2 операции: получение значения, запись значения. Нет никакой возможности вытянуть все ключи по определенному признаку или паттерну. Сделано это сознательно, с целью сделать его максимально простым, а значит, максимально быстрым.
Итак, представим ситуацию, что мы храним в кэше данные записей блога под ключами post_. В определенный момент нам требуется сбросить все записи с постами, при этом не очищая кэш полностью (там могут хранится другие данные, значения которых все еще актуальны). Ситуация получается безвыходная. Мы не знаем список ключей постов, получить их нет возможности, сбросить ключи по паттерну тоже невозможно. Что же делать?

Начало работы с Kohana

Программа самозагрузки Kohana

Прежде чем приступить к разработке приложения, загрузите программу раскрутки и завершите установку.

Запустите следующую команду, чтобы отредактировать файл загрузки при помощи nano:

Отредактируйте временной пояс:

Установите локаль при помощи параметра setlocale:

Установите местонахождение каталога приложения:

Включите модули:

Сохраните и закройте файл (CTRL+X и Y для подтверждения).

Завершающие действия и тестирование

Теперь протестируйте установку и при помощи веб-браузера откройте приложение:

Убедившись, что все работает должным образом, удалите install.php. Для этого запустите:

Снова посетите вышеприведенный URL; на экране появится сообщение «hello, world!». Это значит, что теперь запросы обрабатываются должным образом через нужный шаблон.

Cloud ServerKohanaLAMP stackMVCPHPUbuntu

Контроллер

Контроллер в MVC выполняет роль некоего диспетчерарегулировщика. Он не должен изменять или добавлять данные, производить расчеты и т.д. Его цель — обслуживать поступающие запросы и на каждый такой запрос соответствующим образом отвечать. Например, пользователь обращается к главной странице сайта нашего журнала — https://xakep.ru. Его запрос в первую очередь получает определенный контроллер (если рассматривать на примере шаблона MVC). После получения запроса он выполняет действие, забинденное на данный тип запроса. Причем сам контроллер ни в коем случае не должен содержать код для выборки данных и т.д. Сама выборка должна быть организована в модели.

Web Application Development Frameworks

Kohana is a web application development framework. Given PHP’s nature as a language and the way the code written is executed on computers, there is no strict requirement to exploit frameworks to quickly develop applications when working with it. However, for any serious application that aims to have a long(-ish) lifecycle (making use of code already written once and with more than a single developer working on it), using a framework means making a ton of things much simpler.

What Are Frameworks?

Much like the dictionary definition of the word framework, web application frameworks provide both an essential structure to begin developing and a glue layer to hold everything together in a sound and logical way that makes sense for those who are familiar with the framework itself.

These bases come with many of the necessary common tools that are almost always needed to develop web applications such as processing incoming requests, generating and populating templates, returning responses, handling security and authentication, managing cookies (and sessions) and more.

What Makes a Framework “Light”?

Depending on the amount of tools a framework is shipped with out of the box, it is either referred to as a lightweight or an all-in-one (full stack, batteries included, etc.) solution. Kohana, albeit being extremely powerful and functionally rich, can still be considered light because of the freedom it gives to developers working with it, and the way it has been designed and set to operate.

Methods

current()

returns the current URI string. This method accepts one optional parameter. If you set it to TRUE the query string will be included in the return value.

// site_domain = 'localhost/kohana/'
// site_protocol = 'http'
// index_page = 'index.php'
// url_suffix = '.html'
 
// Current URL: http://localhost/kohana/index.php/welcome/home.html?query=string
 
echo url::current();

Returns

welcome/home

While

echo url::current(TRUE);

Returns

welcome/home?query=string

base()

returns the base URL defined by the and in .

// site_domain = 'localhost/kohana/'
// site_protocol = 'http'
 
echo url::base();

Generates

http://localhost/kohana/

accepts two optional parameters. Set the first parameter to if you want to append the defined in to the base URL. Via the second parameter you can overwrite the default from .

// site_domain = 'localhost/kohana/'
// site_protocol = 'http'
// index_page = 'index.php'
 
echo url::base(TRUE, 'https');

Generates

https://localhost/kohana/index.php

site()

returns a URL based on the , , , defined in .

// site_domain = 'localhost/kohana/'
// site_protocol = 'http'
// index_page = 'index.php'
// url_suffix = '.html'
 
echo url::site();

Generates

http://localhost/kohana/index.php/.html

accepts two optional parameters. You can pass URL segments via the first one. The second one allows you to overwrite the default from .

// site_domain = 'localhost/kohana/'
// site_protocol = 'http'
// index_page = ''
// url_suffix = '.html'
 
echo url::site('admin/login', 'https');

Generates

https://localhost/kohana/admin/login.html

file()

returns the URL to a file. Absolute filenames and relative filenames are allowed.

  • filename
  • include the index.php
echo url::file('download.zip');

Produces

http://domain.tld/download.zip

title()

returns a properly formatted title, for use in a URI. The first parameter, the input title string, is mandatory. The optional second parameter is used to set the separator character. By default this is a dash. You can only change this to an underscore.

$input_title = ' __Ecléçtic__ title\'s  entered by cràzed users- ?>  ';
 
echo url::title($input_title, '_');

Generates:

eclectic_titles_entered_by_crazed_users

What happens to the input title? All non-alphanumeric characters, except for dashes or underscores (depending on the second parameter), will be deleted. However, non-ascii characters will first be (for example: becomes ) in order to keep the URL title as readable as possible. Finally, the URL title is converted to lowercase.

redirect()

generates an HTTP Server Header (302) and runs the system.redirect event, which will redirect the browser to a specified URL, by default defined in .

will always call the php function to prevent further script execution.

url::redirect('http://www.whitehouse.gov');

Will redirect the browser to the White House website.

The optional second parameter can be used to set the redirect method. The default is 302.

// site_domain = 'localhost/kohana/'
// site_protocol = 'http'
 
url::redirect('aboutus', 301);

Will redirect with a 301 header to .

If you wish to send a Multiple Choice (300) redirect, provide an array of URIs to the redirect method:

url::redirect(array('aboutus','http://www.kohana.php/'), 300);

The first URI in the array is considered the preferred URI and will be placed in the Location header. All of the URIs will then be output in a HTML unordered list. Generally the browser will follow the location header and this list will never be seen. However, there is no standard defined behavior for what a user agent should do upon receiving a 300 and the list could be used to present the user with the choices you have given.

Модуль авторизация через ВКонтакте для Kohana

После открытия API ВКонтакте сразу появилось несколько статей по созданию быстрой авторизации на своём сайте пользователей vk.com, в т.ч. и на PHP. Решил заняться написанием модуля авторизации для Kohana.Документация по API очень хилая, пришлось изучать js-скрипты durov.at и переносить некоторый функционал на PHP (отправка POST-запроса с получением полной информации о пользователе, вместо ajax-овой реализации на durov.at). Самым сложным местом оказалось генерирование уникальной подписи запроса (как они объясняют, «подпись запроса по стандартной схеме»), т.к. этот процесс нормально не описан.Модуль Vk умеет логиниться и получать информацию о пользователе и, соответственно, разлогиниваться. Информация хранится в cookie и в сессии. При желании, можно складывать всё в БД, запрашивать дополнительную информацию о пользователе и т.д.
Подробное описание на странице модуля в github. Не забываем создать свое приложение ВКонтакте для тестирования и записать полученные API ID, ключ приложения и защищенный ключ в , а также создать файл по примеру в описании.

Пример доски объявлений на Kohana

Kohana — довольно молодой PHP фреймворк, форк CI, всецело завязанный на ООП. К достоинствам Kohana можно отнести использование всех возможностей PHP5 на 100%, высокую скорость работы, «легковесность» и простоту как использования, так и изучения. Из минусов отчетливо выделяется небольшое комьюнити, как следствие, не шибко качественная документация и небольшое количество модулей и библиотек.
Не так давно своё знакомство с фреймворками я начинал именно с Kohana и, надо сказать, я был удивлен, насколько легко он мне поддался. Думал будет намного сложнее. Но очень сказывалась нехватка документации и примеров кода. Зарывшись в маны и разбор исходников, через некоторое время, я восполнил интересующие меня пробелы относительно Kohana, и поэтому решил написать эту статью, дабы другим хабралюдям, оказавшимся в схожей ситуации не пришлось по ночам не досыпать и лечить головные боли.
Под катом пример доски объявлений, написанный с помощью Kohana, возможно местами он не претендует на рациональность и здравый смысл, но всё-же я надеюсь услышать конструктивную критику.
Статья рассчитана на людей, имеющих понятие об MVC и ООП, но не имевших, либо мало имевших, дело с фреймворками.

Фреймворки для разработки веб-приложений

Учитывая природу РНР и способ обработки написанного кода, при разработке приложения необязательно использовать фреймворк. Однако фреймворк способен сделать процесс создания приложения, которое должно долго просуществовать (благодаря хорошо написанному коду, над которым работало несколько специалистов), гораздо проще и быстрее.

Что такое фреймворк?

Фреймворки предоставляют необходимую структуру для начала разработки веб-приложений, а также надежно связывают все компоненты, обеспечивая надежное и логичное построение приложения.

Они, как правило, поставляются с большим количеством общих инструментов, которые обрабатывают важные для жизни веб-приложений процессы (среди них обработка входящих запросов, создание и заполнение шаблонов, возврат ответов, обработка безопасности и аутентификации, управление файлами cookies и сессиями, и многое другое).

Что делает фреймворк легким?

В зависимости от количества инструментов, с которыми фреймворк поставляется «из коробки», фреймворки можно условно разделить на легкие и «все в одном» (или полный стек). Несмотря на мощность и внушительное количество функций, фреймворк Kohana все же считается легким, поскольку (согласно способу проектирования и установки) он дает разработчику некоторую свободу.

История

Проект Kohana был создан как ветвь PHP фреймворка CodeIgniter под именем Blue Flame. Главной причиной форка был переход к более открытой для общественности модели разработки, потому, что многие пользователи были недовольны скоростью разработки и исправления ошибок в CodeIgniter. Rick Ellis — создатель и владелец CodeIgniter — был счастлив видеть форк своего проекта, но помогать отказался; он подтолкнул новый проект к созданию собственной документации и посоветовал переименовать проект. В июле 2007 Blue Flame был переименован в Kohana для того, чтобы избежать проблем с авторскими правами в будущем.

Название Kohana было выбрано, когда разработчики начали просматривать словари коренных американцев для того, чтобы выбрать слово, не нарушающее авторские права. Kohana на языке Сиу значит «быстрый».

В апреле 2014 года главный разработчик shadowhand заявил, что развитие проекта завершено, однако фреймворк продолжает разрабатываться и поддерживаться сообществом, а на официальном сайте продолжают выходить обновления.

4 февраля 2017 года проект был закрыт, главный разработчик «shadowhand» сообщил об этом на сайте фразой «Kohana is DEAD».

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

Ставим Kohana

Для начала прогуляйся до официального сайта и загрузи последнюю версию фреймворка. Загруженный архив закачай к себе на хост и извлеки его содержимое. Попробуй обратиться к директории своего хоста, в которую ты извлек фреймворк и… — приготовься к облому. Наверняка ты не пройдешь Environment Tests (тест окружения).

В моем случае тесты на запись в директорию хранения кэша и логов тоже завершились неудачей. Для исправления ситуации нужно всего лишь выставить права на запись для этих директорий. В общем, выставляй права и пробуй обновить страницу. В случае успеха увидишь текст: «Your environment passed all requirements. Remove or rename the install.php file now». Помимо радостного известия о готовности окружения для работы фреймворка, текст сообщения требует от тебя удаления файла install.php. Не будем брыкаться и выполним эту пустяковую просьбу. Удалив инсталляционный сценарий, попробуй обновить страницу. Если ты все сделал правильно, то браузер выплюнет девственно чистую страницу с текстом «hello, world».

Вышел Kohana 3.0

Как-то странно, что на Хабре еще нет такой новости, но это может быть связанно с тем, что Москва просыпается немного позже Сибири.
Итак, собственно, свершилось — широко известный в узких кругах PHP фреймворк Kohana наконец переступил порог мажорных версий еще раз, и во всеобщий доступ выложен Kohana 3.0 final.
Обширного чейнджлога, кроме обещаний написанных в посте homm’а я пока не нашел, но от этого новость менее радостной не становится. Собственно:Ссылка на тред с обсуждениямиСсылка для скачиванияСсылка на задачиАпдейт от dohlik
1. Мануал на английском
2. Cобственно исходники на гитхабе, можно форкать и дополнять, в том числе и переводить на русский

Programming with Kohana and Preparations

Kohana, as a light framework, consists of a bunch of files scattered across carefully structured directories which, in the end, is transferred to the production server and used to run the web application. Therefore, each Kohana package can be considered a web application.

Note: In our examples, we will be working on a droplet, running the latest version of Ubuntu. To build web applications with Kohana, you can work on your home computer until the production step and later push your code for publication.

Note: We are going to use a default LAMP (Linux — Apache — MySQL — PHP) set up in our droplet to work with Kohana. To quickly set up a LAMP stack on a Ubuntu droplet, you can use:

Hello world на Kohana

Перед тем как перейти к рассмотрению полезного примерчика, попробуем наколбасить собственный «Hello world». Создадим новый текстовый файл и напишем в нем следующий текст:

В этом клочке кода я описываю наш первый контроллер — класс Controller_Test, унаследованный от Controller

Обрати внимание на имя класса. В имени содержится Controller (обязательный префикс), а после него идет непосредственно название контроллера

Его мы пишем с большой буквы. В моем случае именем контроллера является Test. Контроллеры и модели должны храниться в директории App/ classes/controller и App/classes/model.

Масштабирование веб-приложений с помощью HMVC

Последние десять лет мы наблюдаем второй цикл веб-дизайна – сайты превращаются в приложения и уже практически не появляется новых проектов, не обладающих некой долей интерактивности. Увеличение сложности ПО, разрабатываемого для интернета, вызвало необходимость в структурированном и взвешенном проектировании приложений.
На сегодняшний день наиболее часто используемым паттерном проектирования сайтов является Модель-Вид-Контроллер (MVC). Повсеместное его использование отчасти вызвано успехом и популярностью фреймворка Ruby on Rails. Сейчас MVC является практически синонимом веб-разработки среди всех платформ.
При выполнении задач, активно нагружающих процессор, современные сайты все больше полагаются на выделенные ресурсы. Этому, в частности, поспособствовало открытие компаниями Amazon и Google облачных сервисов, которые позволяют разработчикам существенно уменьшить нагрузку на процессоры их собственных серверов. Каждый сервис обычно проектируется в виде отдельного элемента ПО, который запускается внутри своего домена и использует свои собственные ресурсы.
Когда имеешь дело со скромными бюджетами, обычно довольно сложно убедить клиентов в преимуществах финансирования более чем одного завершенного фрагмента программного обеспечения. Как показывает мой опыт, множество из них придерживаются мнения, что масштабируемость не является актуальной задачей. Они «с нетерпением ждут того дня, когда придется этим обеспокоиться».
Для уменьшения первоначальных вложений обычно принимают решение о том, что приложение должно быть спроектировано в виде целостной программы, содержащей все требуемые функции. Если сайт быстро обретет популярность, это станет проблемой. У меня остались не очень приятные впечатления от рефакторинга плохо масштабируемых кодовых баз. К тому же, это может потребовать большого количества ресурсов и денег. В идеале приложения должны расти по мере необходимости и не требовать в процессе этого крупных финансовых затрат.

Делаем первое представление

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

Все созданные представления должны храниться в папке views, расположенной в директории твоего приложения. По умолчанию директорией приложения является Application. Создавать представления чрезвычайно просто. Ради эксперимента попробуем создать представление about. Его код будет выглядеть примерно так:

Я специально не стал приводить остальную часть кода, так как там может присутствовать абсолютно любой html-код. Нас интересует только то, что расположено между тегами <title>. Там я отправляю на «печать» значение одноименной переменной. Получается, что заголовок страницы будет устанавливаться извне — из контроллера.

Теперь посмотрим на обновленный код ранее рассмотренного нами контроллера:

В первой строке я связываю переменную about_page с представлением about. Для этого я использую конструкцию View::factory. Далее я устанавливаю переменную title и вывожу само представление.

Kohana Framework

Kohana HMVC (Hierarchical Model View Controller) framework offers — probably — all the tools necessary to build a modern web application that can be developed rapidly and deployed/maintained easily using the PHP language.

Kohana’s Features

Compared to other similar solutions, Kohana sets itself apart not with its features but with the way it presents these features and how it performs them.

  • Kohana comes with many of the commonly required additional tools (modules)such as encryption, validation, database access etc.

  • It offers the possibility to simply expand the defaults.

  • Allows building commercial applications with its BSD licensing.

  • Getting started and setting up is extremely fast and easy compared to heavy and complicated frameworks.

  • All the modules and the way things function are designed and built using classes and object. The framework sustains the “Don’t Repeat Yourself” principle.

  • Offers profiling and debugging tools.

  • Its code is very well documented and it comes with a relatively good documentation with examples and good explanations.

  • Prefers following conventions over configurations.

Kohana’s Standard (Out-of-The-Box) Modules

Below are some of the out-of-the-box modules of Kohana.

  • Auth: User authentication and authorization.

  • Cache: Common interface for caching engines.

  • Codebench: Code benchmarking tool.

  • Database: Database agnostic querying and result management.

  • Image: Image manipulation module.

  • ORM (Object Relational Mapper): A modeling library for object relational mapping.

  • Unittest: Unit testing module.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *