Хелперы Date и HTML

Комментарии: 4  Просмотры: 17 405

Поскольку никаких заявок на рассмотрение определенных Хелперов не поступило, я решил все-таки рассмотреть их основную часть, хотя бы кратко. Чтобы вы знали, какие Хелперы в Кохане существуют и могли в случае необходимости ими сразу воспользоваться. Итак, приступим.

Класс Date
Работа с датами в php достаточно сложна. Если честно, я ненавижу работу с датой и временем и их использование всегда вызывало у меня проблемы. Несмотря на то, что в php существует достаточно много функций для работы с датами, они не решают все задачи, которые постоянно встают перед разработчиками. Например, формирование разного рода селектов или определение количества дней, прошедших между двумя датами. Класс Коханы для работы с датами предлагает много методов, облегчающих решение некоторых таких задач.
Довольно часто нам требуется узнать, сколько дней в определенном месяце (а как вы знаете, оно бывает разным, особенно в феврале). И вместо того, чтобы писать несколько строк кода, достаточно воспользоваться всего-лишь одной строчкой. (в данном примере определяется количество дней для февраля 2015 года):

$days = Date::days(2, 2015);

Мы получим массив из 28 элементов следующего характера:
Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 [9] => 9 [10] => 10 [11] => 11 [12] => 12 [13] => 13 [14] => 14 [15] => 15 [16] => 16 [17] => 17 [18] => 18 [19] => 19 [20] => 20 [21] => 21 [22] => 22 [23] => 23 [24] => 24 [25] => 25 [26] => 26 [27] => 27 [28] => 28 )
Дальше уже можно распоряжаться этими данными по своему усмотрению. Например, создать селектор с днями для определенного месяца определенного года (в той же регистрации пользователя).
Абсолютно аналогично работают такие методы, как months, years, seconds, hours и minutes. Естественно параметры, передаваемые в метод, будут другими. Причем там могут быть несколько вариантов.
Получение количества месяцев в 2015 году:

$days = Date::months(2015);

Этот код вернет нам массив:
Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 [9] => 9 [10] => 10 [11] => 11 [12] => 12 )
А вот код:

$days = Date::months(Date::MONTHS_LONG);

Вернет нам уже другой массив:
Array ( [1] => January [2] => February [3] => March [4] => April [5] => May [6] => June [7] => July [8] => August [9] => September [10] => October [11] => November [12] => December )
Все варианты передаваемых параметров с подробным их описанием вы найдете в комментариях к каждому методу.
Еще один интересный метод — метод span позволяет получить разницу во времени между двумя числами.

$span = Date::span(10, 10000, 'hours,minutes,seconds');

В данном случае мы получим следующий массив: Array ( [hours] => 2 [minutes] => 46 [seconds] => 30 ) .
Естественно, вывод не ограничивается часами, минутами и секундами.
Ну и напоследок метод, переводящий время в 24-часовой формат.

$hour = Date::adjust(3, 'pm'); // 15

Это код из комментария к методу. Таким образом я еще раз напоминаю, смотрите комментарии, там все есть :)
Остальные методы этого класса предлагаю вам рассмотреть самостоятельно. Добавлю только, что для того, чтобы заменить в некоторых методах англоязычный текст на русскоязычный в том же в методе fuzzy_span ну или даже добавить что-то свое, вы должны создать класс Date внутри папки application/classes и вынести туда измененные и добавленные методы.

Класс HTML
Данный класс позволяет создавать HTML-элементы, но не только. Например, для защиты от XSS-атак имеется такой вот очень полезный метод:

$text = "<script>alert('XSS атака');</script>";
echo HTML::chars($text);

Ява-скрипт в данном случае не сработает и мы получим просто текст:

<script>alert('XSS атака');</script>

Причем, если посмотреть html-код страницы, то мы увидим следующую картину:

&lt;script&gt;alert(&#039;XSS атака&#039;);&lt;/script&gt;

Ну а для создания, ссылок рекомендуется использовать следующий метод:

echo HTML::anchor('articles/article1', 'Статья 1');

С помощью этого кода будет сформирована ссылка, аналогичная ссылке Статья 1 в боковом меню нашего тестового блога.
Если необходима ссылка на файл, то она будет выглядеть так:

echo HTML::file_anchor('files/file1.zip', 'Файл 1');

А так выглядит изображение:

echo HTML::image('media/img/logo.png', array('alt' => 'Логотип'));

Чтобы подключить стили и скрипты, используем следующие методы:

echo HTML::style('media/css/screen.css');
echo HTML::script('media/js/jquery.min.js');

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

<< Назад | Вперед >> | Обсудить на форуме


К записи оставлено 4 коммент.

Почему не приводите практические примеры? Например для Date можно было бы показать добавление даты в таблицу с комментариями и вывод ее после.

Обычно дата в базу пишется посредством NOW() или CURRENT_TIMESTAMP. А подсчет всякого там количества дней я использую для селекторов и приводить по ним пример не вижу смысла.

«метод span позволяет получить разницу во времени между двумя числами.»
с учётом что в примере не указан формат исходных данных (а это секунды)…
«крокодил более зелёный чем длинный»

Ну. Секунды. Стандарт измерения времени.
Вообще не понял замечания.



Оставить комментарий или два

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