Как стать автором
Обновить
0
Рейтинг

Kohana

PHP5 веб-фреймворк с открытым кодом

Сначала показывать
  • Новые
  • Лучшие
Порог рейтинга
  • Все
  • ≥0
  • ≥10
  • ≥25
  • ≥50
  • ≥100

Зарелизилась Kohana 3.2.0

Kohana
image
Поздравляю всех и каждого, сегодня зарелизилась новая версия фреймверка Kohana под номером 3.2.0.

Изменений меньше, чем было при релизе 3.1.0, но и их хватает.

С основным списком изменений и инструкции по обновлении можно ознакомится тут.

Так же к новой версии был подготовлен и новый сайт, который можно наблюдать по адресу: kohanaframework.org
Читать дальше →
Всего голосов 36: ↑26 и ↓10 +16
Просмотры1.2K
Комментарии 15

Работа с OAuth v2

Kohana
Предлагаю почитать статью о «прикручивании» второй версии протокола OAuth (он на стадии черновика еще, ага). Сперва немного об общих принципах работы, потом привожу практическую часть (фреймворк Kohana, модуль OAuth).

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

Дико извиняюсь, но топики-ссылки мне неподвластны. Вынужден нагло публиковать в качестве полноценного топика.
Всего голосов 42: ↑31 и ↓11 +20
Просмотры3.8K
Комментарии 2

Первичный кэш в Kohana 3 с использованием тегов

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

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

Учитывая все это, и в связи с ограничениями используемых хостингов требования были следующие:
  • Кэш должен храниться в файлах.
  • Кэш должен храниться долго, для увеличения скорости извлечения данных и снижения нагрузки на СУБД.
  • При обновлении данных администратором сайта, кэш, содержащий устаревшие данные должен очищаться, причем, очищаться должен не только кэш результатов функций, напрямую извлекающих эти данные из базы, но и тех, результаты которых связаны с этими данными (например, при удалении рубрики каталога должен очищаться кэш списков позиций рубрик). Для достижения этой цели должны поддерживаться теги.
  • Ради достижения цели можно в определенных рамках пожертвовать временем, уходящим на добавление новых материалов, и которое будет затрачено в том числе на очистку кэша, так они добавляются «своим человеком», а не сторонними пользователями.

Стандартный класс Cache_File не поддерживает теги, по этой причине потребовалось писать свой класс, ему было дано имя JetCache.

Класс спроектирован по шаблону «одиночка». Рассмотрим пример работы класса в модели для банка файлов. При инициализации модели создается экземпляр:

$this->cache = JetCache::instance();


Создание кэша данных рассмотрим на примере функции для извлечения списка файлов определенной рубрики (здесь из нее удалены некоторые аргументы и некоторый код для упрощения чтения):
Подробности далее
Всего голосов 18: ↑15 и ↓3 +12
Просмотры3K
Комментарии 31

Видеокурс по Kohana 3.1

Kohana
Приветствую вас, уважаемые хабралюди!

Хочу предложить вашему вниманию видеокурс моего производства по фреймворку Kohana 3.1.

Что за видеокурс такой и кому он нужен: видеокурс бесплатный, доступен без предварительной регистрации — я не последователь Азамата Ушанова (да-да, такие еще остались, но нас очень мало).

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

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

На кого рассчитан видеокурс: начинающие веб-мастера, желающие перейти от программирования на чистом PHP к MVC-фреймворку.
Читать дальше →
Всего голосов 69: ↑59 и ↓10 +49
Просмотры17.4K
Комментарии 34

Универсальная шаблонизация для Kohana 3.1

Kohana
Из песочницы
Здравствуйте, уважаемые жители Хабра.

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

Копаясь в таких монструозных штуках, как Drupal или Joomla, я понимал, что да, обилие развитого API и наличие большого количества модулей делает такие движки незаменимыми при создании сайтов практически любой сложности, однако, переходя на более простые вещи, вроде MVC фреймворков CodeIgniter или Kohana (последний, по существу, следует концепциям HMVC), приходило понимание, что колоть орехи ракетами земля-земля не всегда удобно, и легкость не только в обращении с кодом, но и в работе самого сайта, что называется, «решает».

В настоящий момент я работаю на MVC (или HMVC, если быть точным) фреймворке Kohana, в частности, на ветках версий 3.0 и 3.1, и, попытавшись найти наиболее полное и элегантное решение для адекватной шаблонизации сайта, я с удивлением обнаружил, что либо мои навыки гугления морально устарели, либо действительно результаты подвели, но однозначно объективного лидера для моей задачи нет.

Собрав некоторые из своих мыслей и наработок, я решил объединить их в удобную и интуитивную систему шаблонизации.
Читать дальше →
Всего голосов 23: ↑14 и ↓9 +5
Просмотры4.4K
Комментарии 34

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

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

Итак, начнем…
Читать дальше →
Всего голосов 50: ↑39 и ↓11 +28
Просмотры9.9K
Комментарии 25

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

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

На сегодняшний день наиболее часто используемым паттерном проектирования сайтов является Модель-Вид-Контроллер (MVC). Повсеместное его использование отчасти вызвано успехом и популярностью фреймворка Ruby on Rails. Сейчас MVC является практически синонимом веб-разработки среди всех платформ.

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

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

Для уменьшения первоначальных вложений обычно принимают решение о том, что приложение должно быть спроектировано в виде целостной программы, содержащей все требуемые функции. Если сайт быстро обретет популярность, это станет проблемой. У меня остались не очень приятные впечатления от рефакторинга плохо масштабируемых кодовых баз. К тому же, это может потребовать большого количества ресурсов и денег. В идеале приложения должны расти по мере необходимости и не требовать в процессе этого крупных финансовых затрат.
Читать дальше →
Всего голосов 58: ↑49 и ↓9 +40
Просмотры16.9K
Комментарии 41

Kohana 3: модуль “kohana-static-files”

Kohana

При знакомстве с фреймворком, я первым делом смотрю не на его возможности, а на готовые решение, которые он предоставляет. В частности возможность удобно собирать JS/CSS файлы по частям и «отдавать» согласно рекомендациям по клиентской оптимизации (YSlow/Google PageSpeed). Ни в одном из просмотренных мной, нужной мне реализации я не увидел, даже в Django (которым, собственно, и был вдохновлен), поэтому решил сделать свое решение в виде готового к применению модуля для Kohana v.3.

Итак, опишем основные потребности/хотелки, которые ставились перед разработкой модуля:
1) Сборка inline CSS/JS по кусочкам
2) Возможность отдавать п.1 путем вставки в код страницы либо сгенерировав и записав на диск файл, с уникальным именем.
3) Возможность сборки внешних файлов CSS/JS в один билд
4) Возможность указывать условие, при котором подключается тот или иной билд из пункта 3, а также любой другой внешний файл (
<!--[if IE 7]>
).
5) Возможность вынести статику на другой домен, главное чтобы он был на этом же физическом сервере.
6) Использование CDN
7) Минимизация CSS/JS.
8) Самое важное: СПОСОБ, позволяющий включать статику (а эо обычно не только CSS/JS, но и, например. картинки) в распространяемые модули. Так как текущий способ, когда в modules/ переносится и подключается сам функционал модуля, а статика либо копируется в произвольное место DOCUMENT_ROOT, либо обязательное условие – чтобы modules находилась в DOCUMENT_ROOT.
9) Возможность легко менять URL со статикой, чтобы он никак не конфликтовал с роутингом, например будет не хорошо, если вы захотите иметь раздел про CSS по урл ”/css/” когда до этого вы сделали это реально существующей директорией с файлами стилей.

Т.е. нужно придумать и соблюдать в дальнейшем какие то соглашения.
Многое из задуманного было воплощено в реально работающий модуль,.
подробности см. под катом
Всего голосов 35: ↑28 и ↓7 +21
Просмотры5.1K
Комментарии 23

Знакомство с Kohana 3.0 — Части 7, 8, 9

Kohana
Перевод
Встречайте седьмую, восьмую и девятую части цикла статей по разработке с Kohana PHP V3 (KO3). Предыдущие части можно найти по метке "знакомство с kohana 3.0". В этой статье типа 3-в-1 мы рассмотрим помощники (хелперы), модули и использование сторонних библиотек.
Читать дальше →
Всего голосов 18: ↑8 и ↓10 -2
Просмотры2.8K
Комментарии 5

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

Kohana
Перевод
Встречайте шестую часть цикла статей по разработке с Kohana PHP V3 (KO3). Предыдущие части можно найти по метке "знакомство с kohana 3.0". В этой части мы рассмотрим роутинг.
Читать дальше →
Всего голосов 15: ↑7 и ↓8 -1
Просмотры3.7K
Комментарии 11

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

Kohana
Перевод
Встречайте пятую часть цикла статей по разработке с Kohana PHP V3 (KO3). Предыдущие части можно найти по метке "знакомство с kohana 3.0". В этой части мы рассмотрим HMVC (Иерархические-Модель-Вид-Контроллер).
Читать дальше →
Всего голосов 12: ↑6 и ↓6 0
Просмотры2.7K
Комментарии 4

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

Kohana
Перевод
Встречайте четвертую часть цикла статей по разработке с Kohana PHP V3 (KO3). редыдущие части можно найти по метке "знакомство с kohana 3.0". В этот раз речь пойдет о работе с моделями.
Читать дальше →
Всего голосов 35: ↑20 и ↓15 +5
Просмотры9.4K
Комментарии 22

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

Kohana
Перевод
Встречайте третью часть цикла статей по разработке с Kohana PHP V3 (KO3). Предыдущие части можно найти по метке "знакомство с kohana 3.0". В этот раз речь пойдет о создании шаблонов.

Во второй статье мы рассмотрели виды, а теперь будем наследовать классы Controller'а, что позволит создать шаблон. Шаблон представляет собой вид, который состоит по большей части из (X)HTML кода.
Читать дальше →
Всего голосов 14: ↑7 и ↓7 0
Просмотры6.2K
Комментарии 11

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

Kohana
Перевод
Встречайте вторую часть цикла статей по разработке с Kohana PHP V3 (KO3). Первая находится здесь, в случае если вы ее еще не читали. В этот раз мы пройдемся по разработке видов (представлений).
Читать дальше →
Всего голосов 16: ↑10 и ↓6 +4
Просмотры5.7K
Комментарии 20

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

Kohana
Перевод
Давайте вначале убедимся, что у нас есть все необходимое:
  • установленные Apache, MySQL, PHP
  • знание PHP
  • знание понятия “фреймворк
  • знание понятия “MVC

Поехали!
Читать дальше →
Всего голосов 72: ↑48 и ↓24 +24
Просмотры7.1K
Комментарии 37

Фанатам фреймворка Kohana — сделал клон репозитория (155+ модулей для v.3)

Kohana
imageФанатам фреймворка Kohana — сделал клон репозитория (155+ модулей для v.3)

Если знаете еще модули для KO3 (пришлите в приват)

Текущие модули:
Читать дальше →
Всего голосов 28: ↑22 и ↓6 +16
Просмотры3K
Комментарии 18

Контроллер для работы с медиа-файлами в Kohana

Kohana
Приветствую!
Данная статья будет скорее полезна для новичков, но, с учетом отсутствия обширной документации по фреймворку, таких немало и поэтому я решил все-таки опубликовать ее.
На написание этой статьи меня также сподвигло множество вопросов, связанных с работой с медиа-файлами в Kohana и некоторые куски кода во многих просматренных мной исходниках проектов на Ko3 (люблю рассматривать реализации различных проектов на этом фреймворке — за отсутствием документации порой сильно помогает).
И так, что же мы будем делать?
Мы напишем контроллер, который будет обрабатывать запросы вида media/css/default и возвращать нам (кэшированный, если есть) файл views/.../media/css/default.css, например.
Читать дальше →
Всего голосов 5: ↑3 и ↓2 +1
Просмотры2.3K
Комментарии 13

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

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
Просмотры2.4K
Комментарии 17

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

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

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

Интеграция OAuth и Twitter API в фреймворк Kohana3

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

Проштудировав несколько мануалов (например, у Дмитрия Котерова имеется очень хорошая статья по этой теме) и поняв основной принцип работы OAuth, я пришел к выводу, что писать свой велосипед — неэффективная задача на данный момент, и решил посмотреть, что уже есть готового в интернете.

Итак, что же мы видим, зайдя на http://dev.twitter.com/pages/libraries? Невообразимое количество готовых решений для нашей задачи. Я решил остановится на приглянувшейся мне библиотеке Twitter-async от Jaisen Mathai. Далее опишу, как интегрировать библиотеку в Kohana 3 и как ей пользоваться.
Читать дальше →
Всего голосов 30: ↑24 и ↓6 +18
Просмотры1.9K
Комментарии 10

Вклад авторов