Думаю все из вас, уважаемые читатели, имеют небольшие куски кода, которые выполняют определенные задачи и копируются из проекта в проект, позволяя не изобретать каждый раз велосипед, а пользоваться уже готовым (кодом, не велосипедом). В Кохане они называются Хелперами (англ. Helpers — помощники) и представляют из себя набор классов. В каждом классе находится набор статических методов, посвященных решению определенного круга задач. Если это класс-Хелпер для работы с датами, то в нем будут методы только для работы с датами. Поскольку методы статические, нам нет нужды создавать экземпляр класса. Мы просто обращаемся к методу и получаем интересующий нас результат. Все, что нам нужно знать — это название класса, название метода, какие параметры нам нужно передать и какие параметры мы получим.
Например:
$message = Arr::get($_POST, 'message', '');
Это по сути тоже самое, что и тернарная операция (а раньше я так и писал, позволяет избежать ворнинга, знаете ли):
$message = isset($_POST['message'])? $_POST['message'] : '';
В данном случае Хелпер предназначен для работы с массивами, название класса Хелпера — «Arr», название статического метода — «get». Естественно данный метод позволяет работать не только с массивом $_POST и в этом его универсальность. Я специально рассказываю все это очень подробно, так как Хелперов очень много, методов в них еще больше и если рассматривать каждый метод каждого Хелпера, то это затянется еще уроков на десять. Тем более, что каждый метод и так имеет очень подробное описание с примерами (!) в комментарии к нему.
Лежат Хелперы в папке system/classes/kohana (вообще они изначально лежат в папке system/classes, но наследуются из system/classes/kohana). Название файла совпадает с названием класса. Кстати говоря, здесь лежат не только Хелперы, но и другие классы Коханы. В старых версиях фреймворка, а также в небезизвестном фреймворке CodeIgniter, Хелперам выделялась отдельная папка. Ну а здесь все свалили в кучу, по всей видимости для упрощения автозагрузки (autoload-а) классов.
Итак, находим файл arr.php, открываем его. Находим метод get:
/** * Retrieve a single key from an array. If the key does not exist in the * array, the default value will be returned instead. * * // Get the value "username" from $_POST, if it exists * $username = Arr::get($_POST, 'username'); * * // Get the value "sorting" from $_GET, if it exists * $sorting = Arr::get($_GET, 'sorting'); * * @param array array to extract from * @param string key name * @param mixed default value * @return mixed */ public static function get($array, $key, $default = NULL) { return isset($array[$key]) ? $array[$key] : $default; }
И видим, что комментариев тут больше, чем самого кода . Зато сразу понятно, что метод принимает три параметра (причем третий — не обязательный): массив, название ключа этого массива и значение, которое вернется, если такого ключа в массиве не окажется (по умолчанию возвращается NULL).
Если нам нужно получить не одно значение массива, а несколько, то, чтобы не вызывать несколько раз метод get, мы можем использовать метод extract, который работает практически также, только вторым параметром передается уже не один ключ, а массив ключей. И на выходе мы получим не одно значение, а массив значений, где отсутствующим ключам будет также присвоено значение переменной $default. Опять же, в комментариях все это подробно, с примерами, расписано.
В следующем уроке я расскажу о самых интересных, на мой взгляд, Хелперах, которые могут пригодиться в разработке проекта. Полезность некоторых Хелперов вызывает у меня некоторые сомнения, например, я никогда не пользуюсь Хелпером «Form» для генерации формы и элементов форм, но кто-то возможно пользуется. Зато Хелперы «Arr», «Date», «Cookie», «UTF8″, «Upload» и некоторые другие используются постоянно. В комментариях вы можете указать, какие Хелперы вы считаете наиболее интересными и я постараюсь остановиться на них подробнее. Удачи.
Поскриптум: Кстати говоря, некоторые Хелперы мы с вами уже использовали, только не заостряли внимания на этом. Например, в уроке Заготовка для блога – Часть 2 использовался Хелпер «Url» и его метод «site» для формирования ссылок в меню.
<< Назад | Вперед >> |
Пожалуйста, зарегистрируйтесь для комментирования.
Не оч понял, вот я хочу вытащить название стати с использованием Arr::get(), сделал так
…
if($id) {
$content = View::factory(‘pages/article’)
->set(‘article’,$id)
->bind(‘comments’,$comments)
->bind(‘test’,$arr);
$arr = Arr::get($_GET,’id’);
…
Результат нулевой, подскажите в чём я запутался)) Думаю другим тоже будет интересен пример реализации.
Пример взял от балды, то, что параметр можно вытаскивать с помощью $this->request->param() знаю)
Вы несколько путаете )
Arr::get() достает данные из массивов. Если бы в адресной строке стояло что-то вроде
mysite.ru/articles?id=5
тогда да, сработало бы, т.к. id попало бы в гет-массив $_GET['id']=5
А то, что сейчас в адресной строке (ЧПУ) не является GET-массивом.
Понял, спасибо))
А вот случай с массивом $_POST — в дальнейшем для обработки форм логично использовать данный метод? Или будет потом ещё что то по удобнее?
Да, хелпер Arr.
Вот тут про него
http://kohanaframework.su/helpers/helpers_arr
подробнее
>> я никогда не пользуюсь Хелпером «Form»
А каковы причины? На буржуйских форумах в примерах часто используют этот хелпер…
Визуально проще работать. Но я ни в коем случае не запрещаю им пользоваться
Взяли бы и написали бы тогда по нему урок <_<
Доброго времени суток, может не совсем по теме, но очень меня мучает вопрос >>>
Зачем в kohana в папке system/classes лежат пустые классы которые полностью наследуют(не добавляют и не переопределяют) классы из папки system/classes/kohana?
Может как то таким образом достигается дополнительная безопасность(защита)?
Здесь встретил в тексте статьи -> здесь и спрашиваю.
Заранее спасибо!