Как стать автором
Обновить

Фреймворк Kohana — впечатления от использования

Время на прочтение 2 мин
Количество просмотров 16K
Kohana *
Приветствую тебя, Хабрачеловек.

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

Итак.
Читать дальше →
Всего голосов 62: ↑53 и ↓9 +44
Комментарии 79

Барахолка на Kohanaphp. Часть 1

Время на прочтение 4 мин
Количество просмотров 1.3K
Kohana *
Делаем то же самое что и здесь, только используя Kohanaphp:

Отличия kohanaphp от codeigniter:

* Использует PHP 5 ООП
* Абстракция базы данных, используя SQL helpers
* Разнообразные драйвера сессий (native, database и cookie)
* Обработчик событий
* Основан на базе CodeIgniter
Получить kohana можна на сайте kohanaphp.
много кода с комментариями под катом
Всего голосов 15: ↑10 и ↓5 +5
Комментарии 5

Чудеса на серверах.

Время на прочтение 2 мин
Количество просмотров 422
Чулан
Прошу обратить внимание на то, что я считаю эту ситуацию из ряда вон выходящей, граничащей с мистикой, и поэтому прошу простить мне излишнюю литературность описания проблемы.

Вступление.


У меня есть вопрос. Как вы считаете, если в программе нигде не используется генератор случайных чисел (И вообще приложение не принимает никаких входящих аргументов, которые могут повлиять на её работу.), может ли она в зависимости от фазы луны или еще от чего либо выдавать разные результаты? Ну как бы наверное нет, я думаю вы со мной согласны.
А теперь давайте себе представим ситуацию.
Читать дальше →
Всего голосов 15: ↑7 и ↓8 -1
Комментарии 53

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

Время на прочтение 22 мин
Количество просмотров 16K
Kohana *

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

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

Под катом пример доски объявлений, написанный с помощью Kohana, возможно местами он не претендует на рациональность и здравый смысл, но всё-же я надеюсь услышать конструктивную критику.

Статья рассчитана на людей, имеющих понятие об MVC и ООП, но не имевших, либо мало имевших, дело с фреймворками.

Итак, приступим...
Всего голосов 73: ↑62 и ↓11 +51
Комментарии 82

Kohana vs Codeigniter, Синтетика производительности

Время на прочтение 2 мин
Количество просмотров 1.1K
Чулан
Я хочу привести сравнение производительности двух удивительных (и, по моему скромному мнению, восхитительных) фреймворков, Kohana и Codeigniter. Тест синтетический, но, как мне кажется, все-таки интересный.
Смотреть что показали тесты
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 8

Вышел релиз Kohana v2.3.1

Время на прочтение 1 мин
Количество просмотров 872
Kohana *
Обновился любимый фреймворк жителей данного блога :)
Собственно говоря, версия 2.3.1 была создана под лозунгом «даешь багфиксы!», поэтому и в changelog'е практически ничего другого мы не увидим.

Все перечислять тут не буду, только самые интересные:
  • В конфиге (application/config/config.php) опция "enable_hooks" не поддерживает передачу списка хуков — только суровое TRUE/FALSE. В общем-то, опция и в 2.3 не работала — просто комментарии в скрипте описывали эту «фишку», теперь комментарии более адекватны.
  • В хэлпере Inflector (работа со множественным и единственным числами слов) добавлены два исключения — courses и sizes (в единственном числе у них надо «отчекрыжить» только одну букву «s»).
  • В объект Database добавлены методы pop() и push(), а также свойство query_history для хранения стека запросов.
  • Из модели Auth убраны тестовые примеры. Логично — они использовали библиотеку Forge, исключенную из дистрибутива Kohana.


Ну и конечно ссылки:
Список изменений
Обсуждение
Страница загрузки
Всего голосов 7: ↑5 и ↓2 +3
Комментарии 2

Модуль для иерархических представлений (View) для Коханы

Время на прочтение 4 мин
Количество просмотров 1.5K
Kohana *
Речь пойдет о первом моем модуле для фреймворка Kohana.

image
Признаюсь честно, при первом и последующих взглядах на этот фреймворк он мне очень понравился. Но как известно нет ничего идеального. Как мне показалось, одно из самых слабых мест в Кохане — довольно примитивные представления (View). По сути они предствляют из себя plain-php файл с экспортированными в глобальную область видимости переменными и доступным по ссылке $this контроллеру. Это очень удобно, когда вам нужно представление для вывода данных, нет ничего лишнего, можно сосредоточиться на коде. Но когда нам нужно вывести макет страницы со сложным расположением элементов, которые могут меняться от раздела к разделу… Что делать? Собирать все из мелких вьюшек в контроллере? Не удобно, особенно если контроллеров много — не дай бог, например, поменяется количество столбцов в разметке, придется в каждом контроллере перераспределять блоки с контентом по столбцам. Наверное по этому в версии 2.4 появится (я надеюсь) модуль интеграции со Смарти.
Читать дальше →
Всего голосов 34: ↑29 и ↓5 +24
Комментарии 15

Debug Toolbar

Время на прочтение 2 мин
Количество просмотров 3.4K
Kohana *

Kohana Debug Toolbar

Debug Toolbar — это модуль для Коханы, который упрощает отладку приложений, написанных на этом PHP-фреймворке. Благодаря различной статистической и отладочной информации, процесс разработки становится проще и приятней для программиста.

Под катом краткая инструкция по установке, описание возможностей и ссылки на дополнительную информацию.
Читать дальше →
Всего голосов 33: ↑25 и ↓8 +17
Комментарии 35

CodeIgniter Debug Toolbar

Время на прочтение 1 мин
Количество просмотров 4.4K
CodeIgniter *
CodeIgniter Debug Toolbar
Многие видели девелоперский тулбар для фреймворка Kohana (слизанный, в свою очередь, с Symfony), который недавно выкладывали на хабре. Мне он очень понравился — захотелось поиметь такой и для себя.

Немножко поколдовав, получилось нечто похожее…
Читать дальше →
Всего голосов 54: ↑43 и ↓11 +32
Комментарии 40

Реализация компонентов в Kohana

Время на прочтение 2 мин
Количество просмотров 2.8K
Kohana *
Представим себе ситуацию, что у нас на сайте есть виджет. Этот виджет повторяется на сайте на каждой странице. Как нам сделать дизайн кода так, чтобы забыть про этот виджет и сконцентрировать внимание на других проблемах?

Конечно мы не можем себе позволить обращаться к области данных из шаблона, иначе это указывало бы на нашу неграмотность. Во многих фрейверках есть для этого свои решения. Но я проведу аналогию с symfony. В последнем имеется такое понятие как компонент. Выглядит это примерно так: вы вызываете в шаблоне статический метод с указанием названия компонентов, далее происходит обращение к одноименному контроллеру, извлекаются данные из области данных и передаются в фрагмент шаблона, последний рендерится и код вставляется в нативный шаблон. Таким образом получается архитектура MVC вложенная друг в друга. Я немного упростил эту схему, сразу говорю, но суть передал точно.

Так вот. В Kohana готового решения нет. Поэтому я и написал простой способ реализации компонентов который решается в три строчки кода.

И так. Пишем хелпер widget.php и кидаем его в папку application/helpers. Содержание хелпера следующее:
Copy Source | Copy HTML
  1. <?php
  2. class widget
  3. {
  4.     public static function paste($className,$functionName,$parameters = null)
  5.     {
  6.         $controllerName = $className.'_Controller';
  7.         $controller = new $controllerName;
  8.         $controller->$functionName($parameters)->render(true);
  9.     }
  10. }
  11. ?>

В классе контроллера пишем метод обычного содержания только вместо рендеринга шаблона мы его возвращаем т.е пишет return. Я всегда использую немного переопределенный контроллер Template_Controller. Пример метода контроллера:

Copy Source | Copy HTML
  1. public function widget_example()
  2. {
  3.     return View::factory('_example.php',array('var' => 'Привет мир!'));
  4. }


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

Copy Source | Copy HTML
  1. <?php widget::paste('Index','widget_example')?>


И все — теперь вместо этой строки у нас отрендерится наш виджет. Вот так вот просто. Если необходимо то можем передать в компонент необходимые значения третьим аргументом в виде массива.
Кстати partial (symfony like) реализовываются простым включением в шаблон
Copy Source | Copy HTML
  1. <?php View::factory('template')->render() ?>

partial — это простое включение шаблона (для тех кто не знает)
P.S. Только давайте не будем разводить холивары по поводу Smarty(и т.п.) vs Native Template.
Есть много наработок по поводу Kohana — со временем опубликую цикл статей на блоге и здесь.
UPD. Перенести пост в блог Kohana немогу. Не хватает кармы
Всего голосов 9: ↑7 и ↓2 +5
Комментарии 29

Kohana 2.3.2

Время на прочтение 1 мин
Количество просмотров 666
Kohana *
Вашла новая версия замечательного фреймворка. Исправлено около 70 багов.

Список изменений

Ссылка для скачивания

При обновлении — заменяем у себя только папки system и modules
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 1

Реализация состояний для веб-приложения

Время на прочтение 3 мин
Количество просмотров 848
Kohana *
Возникал такая проблема. Для разных разделов веб-приложения необходимо было хранить состояния наборов параметров. Далеко ходить не нужно: значения в сессии или куки. Но управление значениями улжнилось тем, что при выходе из раздела состояния должны были терятся.

Ничего особо финтового в примере нет. Просто хелпер из трех функций: одна устанавливает состояние параметра, одна возвращает, одна сбрасывает. Значения храним в сессии.
Основная идея — в том что имя контроллера так же хранится в сессии, и при обращении к состоянию проверяется совпадение имени «последнего» контроллера и «активного». Если совпадают — возвращаем состояние. Если нет — устанавливаем дефолтовые значения состояний и возвращаем дефолтовое.

Такая схема позволяет:
  • свести работу с состояниями к статическому контроллеру и не оперирывать живыми переменными
  • вынести установку дефолтовых значений всех состояний системы в одно место

Читать дальше →
Всего голосов 6: ↑4 и ↓2 +2
Комментарии 9

Двухпроходное View в Kohana

Время на прочтение 5 мин
Количество просмотров 2.7K
Kohana *
В Kohana я обычно использую класс Template_Controller. Очень удобно — layout один, изменяешь только контент. Но как быть если на одной какой-то странице нам понадобилось подключить CSS- или JS-файл?! C js- файлом еще ладно, его можно подключить посредине страницы (но это как-то некрасиво), а как же css?! — это невалидно. Подключать на весь layout тоже неохота. Хочу подключать не в контроллере, а в шаблоне к примеру так:
Copy Source | Copy HTML
  1. <?php head::addCSS('main')?>
Читать дальше →
Всего голосов 16: ↑10 и ↓6 +4
Комментарии 12

Переделываем приложение CD Collection

Время на прочтение 16 мин
Количество просмотров 950
Kohana *
Итак, в предыдущем топике (виден только подписчикам блога!) я ссылался на статью о Kohana, размещенную на сайте NetTuts+. Поскольку в описанном в ней приложении есть недостатки, предлагаю их найти и обезвредить.
Интересно?
Всего голосов 8: ↑6 и ↓2 +4
Комментарии 12

Что нам готовит Kohana 3

Время на прочтение 4 мин
Количество просмотров 2.2K
Kohana *
Как-то так получилось, что примерно месяц я не следил за разработкой этого замечательного фреймворка. Наблюдение за скоростью разработки версии 2.4 вызывало тоску. Но вчера я заглянул на сайт и ахнул. Оказывается, разработчики, не дождавшись готовности версии 2.4, успели уже выпустить целых 2 релиз кандидата версии 3. Глянул я в исходные тексты, немного почитал форум и стало мне так радостно на душе от грядущих изменений, что я решил не дожидаться 09.09.09 или ранее и поделиться радостью.
Читать дальше →
Всего голосов 29: ↑25 и ↓4 +21
Комментарии 52

Интеграция Doctrine в kohana 3

Время на прочтение 3 мин
Количество просмотров 1.8K
Kohana *
Здравствуйте,

После выхода Kohana 3 хочется ее использовать в новых проектах, и использование Doctrine показало, что инструмент очень удобный, потому поделюсь рецептом интеграции.
Читать дальше →
Всего голосов 27: ↑23 и ↓4 +19
Комментарии 36

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

Время на прочтение 4 мин
Количество просмотров 3.1K
Kohana *
Приветствую всех.

Уже довольно давно разрабатываем проект на кохане и встала необходимость эффективного кэширования данных. Не то, чтобы вопрос производительности стоит очень остро в данный момент, но, хотелось бы подготовится заранее, а не писать систему кэширования в ночь после волны посетителей. Да и посещаемость постоянно растет, а в некоторые моменты бывают всплески до 3х раз по сравнению с обычным днем.

Собственно, в выборе системы кэширования особых вопросов не было — на ум сразу приходит всем известный memcached.

Если вы хотя бы немного смотрели memcached, то должны были отметить, что, по большому счету, он поддерживает только 2 операции: получение значения, запись значения. Нет никакой возможности вытянуть все ключи по определенному признаку или паттерну. Сделано это сознательно, с целью сделать его максимально простым, а значит, максимально быстрым.

Итак, представим ситуацию, что мы храним в кэше данные записей блога под ключами post_. В определенный момент нам требуется сбросить все записи с постами, при этом не очищая кэш полностью (там могут хранится другие данные, значения которых все еще актуальны). Ситуация получается безвыходная. Мы не знаем список ключей постов, получить их нет возможности, сбросить ключи по паттерну тоже невозможно. Что же делать?

Решение есть.
Всего голосов 25: ↑20 и ↓5 +15
Комментарии 19

Работа с командной строкой в Kohana3

Время на прочтение 1 мин
Количество просмотров 749
Kohana *
На своём блоге я опубликовал статью о работе с командной строкой во фреймверке Kohana. Её можно почитать по адресу Работа с командной строкой в Kohana3

PS Уважая правила хабралюдей, я не делал кросспостинг.
Всего голосов 11: ↑6 и ↓5 +1
Комментарии 8

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

Время на прочтение 1 мин
Количество просмотров 2.5K
Kohana *
После открытия API ВКонтакте сразу появилось несколько статей по созданию быстрой авторизации на своём сайте пользователей vk.com, в т.ч. и на PHP. Решил заняться написанием модуля авторизации для Kohana.

Документация по API очень хилая, пришлось изучать js-скрипты durov.at и переносить некоторый функционал на PHP (отправка POST-запроса с получением полной информации о пользователе, вместо ajax-овой реализации на durov.at). Самым сложным местом оказалось генерирование уникальной подписи запроса (как они объясняют, «подпись запроса по стандартной схеме»), т.к. этот процесс нормально не описан.

Модуль Vk умеет логиниться и получать информацию о пользователе и, соответственно, разлогиниваться. Информация хранится в cookie и в сессии. При желании, можно складывать всё в БД, запрашивать дополнительную информацию о пользователе и т.д.

Подробное описание на странице модуля в github. Не забываем создать свое приложение ВКонтакте для тестирования и записать полученные API ID, ключ приложения и защищенный ключ в config/vk.php, а также создать файл xd_receiver.htm по примеру в описании.
Всего голосов 44: ↑27 и ↓17 +10
Комментарии 17