- В Kohana популярны методы, являющиеся одновременно и сеттерами, и геттерами. Например, в классе
Request
этоquery()
,post()
,headers()
и т.д. В них можно передать как массив значений, так и отдельную пару. И вот тут-то есть нюанс:$request->query(array('foo' => 'bar')); // через массив $request->query('foo', 'bar'); // через отдельное значение
Данные два примера не равнозначны. Передача массива полностью заменит содержимое свойства
$_query
в объекте$request
, а второй вызов заменит только$_query['foo']
. Следует помнить об этом. - Как известно, в Kohana существует несколько драйверов для внешних запросов (
External Request
): Curl, PECL_HTTP и Stream. По умолчанию используется Curl. При необходимости это легко поменять — взгляните на статическое свойствоRequest_External::$client
. В него надо внести имя драйвера (‘Request_Client_Curl’, ‘Request_Client_Http’ или ‘Request_Client_Stream’). - При создании выпадающих списков с помощью
Form::select()
можно создавать группы значений (тэгOPTGROUP
):// генерируем список echo Form::select( 'foo', array( 'будние' => array( '1' => 'пн', '2' => 'вт', // ... ), 'выходные' => array( '6' => 'сб', '7' => 'вс' ) ));
Заголовок группы берется из имени ключа для массива значений (т.е. в моем примере это ‘будние’ и ‘выходные’).
- Полагаю, все мы пользуемся полезными методами
Arr::get()
иArr::path()
, позволяющими извлекать элементы массива. А знаете ли вы, чтоArr::path()
поддерживает так называемые wildcards?$kohana_versions = array( '3.0' => array( 'date' => '2009-09-17', 'name' => 'renaissance', ), '3.1' => array( 'date' => '2011-02-07', 'name' => 'merle', ), '3.2' => array( 'date' => '2011-07-24', 'name' => 'Kolibri', ), '3.3' => array( 'date' => '2012-10-23', 'name' => 'badius', ), ); $releases = Arr::path($kohana_versions, '*.name');
Массив
$releases
будет содержать значения полейname
(то есть ‘renaissance’, ‘merle’ и т.д.) в том же порядке, как они шли в исходном массиве. Ключи не сохраняются. Проверка на дубликаты значений не производится. - Будьте внимательны с редиректами в v3.3. Так как редиректы выполняются через выброс исключений типа
HTTP_Exception
, они могут быть отловлены блокамиtry...catch
. Такие ситуации возможны при использовании модулей для работы с различными внешними API. - Правило
Valid::range()
получило дополнительную функциональность. Теперь помимо просто нахождения в нужном диапазоне, можно проверять еще и диапазоны с заданным шагом. Для этого добавился еще один четвертый параметр$step
:// предположим, что ожидается значение из диапазона [1, 3, 5, 7, 9] if (Valid::range(2, 1, 9, 2)) // FALSE if (Valid::range(3, 1, 9, 2)) // TRUE
Параметр необязательный, без него правило работает как и в предыдущих версиях.
Точнее говоря, сейчас оно иногда работает неправильно.
Valid::range(1, 1, 9)
вернет FALSE независимо от использования шага. Это известный баг, его поправят в 3.3.1.
Свежие записи
Метки
acl
auth
cache
captcha
CMS
css
database
db
docs
github
helpers
hooks
i18n
jelly
ko3
Kohana
Kohana3
kohana 3.2
kohana 3.3
locale
modules
oauth
ORM
php
relations
router3
routing
session
sprig
tutorials
uri
userguide
validation
версии
версии
заметки
знаете ли вы
мануал
модули
модули
напильник
редирект
релизы
с праздником!
учебник
Про 5е знал до того, как я написал? Тогда почему этот пост появился так поздно?! (((
Я в свое время в твиттере об этом накалякал )) А посты «знаете ли вы» у меня по несколько месяцев пишутся. Нашел фичу — добавил ее в черновик, и так пока более-менее не соберется что-то. Целенаправленно искать такие вещи довольно сложно и нудно.
Не видел, жаль… Много времени из-за этого убил (
пост замечательный