Если вы спрашиваете: «Что такое Yii?» Ознакомьтесь с разделом Введение в Yii Framework , в котором рассматриваются преимущества Yii и представлен обзор Yii 2.0.
Какие помощники?
В серии « Программирование с помощью Yii2» я помогаю читателям использовать Yii2 Framework для PHP. В этом уроке я предоставлю краткий обзор помощников. В Yii помощники — это модули, которые группируют обычно полезные библиотеки для управления строками, файлами, изображениями, URL и HTML, и их легко расширять.
Я также поделюсь примером создания помощника в Meeting Planner, который является предметом нашей серии стартапов Envato Tuts + .
Прежде чем мы начнем, пожалуйста, помните, я стараюсь участвовать в обсуждениях ниже. Если у вас есть вопрос или предложение по теме, пожалуйста, оставьте комментарий ниже или свяжитесь со мной в Twitter @reifman .
Если вы заметили разрыв между эпизодами серии «Программирование Yii», то это потому, что в прошлом году мне пришлось сделать операцию на головном мозге . Спасибо за ваше терпение и поддержку — приятно регулярно писать снова, и я с нетерпением жду продолжения освещения Yii2.
Библиотеки помощников Yii2
По сути, помощники — это просто модули тематически ориентированной поддержки кодирования. Вот список помощников, предоставленных как часть Yii2 — этот список теперь немного более актуален, чем документация и ее меню:
- ArrayHelper упрощает обработку массива с помощью таких функций, как безопасный поиск значений, отображение, объединение и т. Д.
- Консоль помогает с функциональностью командной строки, собирая ввод и вывод цветной текст.
- FileHelper расширяет основные функции управления файлами PHP.
- FormatConverter конвертирует различные форматы, в основном, даты.
- HTML программно генерирует часто используемые теги HTML.
- HtmlPurifier очищает вводимый текст от пользователей для повышения безопасности.
- Imagine предоставляет функции для работы с изображениями, предоставляемые расширением yii2-ima .
- Inflector предоставляет полезные строковые функции для общих преобразований.
- Json кодирует и декодирует данные JSON.
- Уценка преобразует уценку в HTML.
- StringHelper расширяет базовые функции PHP для строк.
- Url помогает программно создавать URL-адреса и запоминать их для навигации.
- VarDumper предоставляет расширенную функцию var_dump.
Я обычно использую помощники Html и Url в своих приложениях Yii. И, как вы помните, я использовал помощника Imagine при создании своего стартапа с помощью PHP: настройки пользователя, изображения профиля и контактные данные для масштабирования загруженных изображений профиля.
Давайте кратко рассмотрим некоторых из менее известных помощников.
ArrayHelper
Как вы можете видеть, ArrayHelper предоставляет несколько полезных функций, ориентированных на массивы.
Например, getValue упрощает поиск значений по ключам в сложных массивах:
01
02
03
04
05
06
07
08
09
10
11
12
|
// working with array
$username = \yii\helpers\ArrayHelper::getValue($_POST, ‘username’);
// working with object
$username = \yii\helpers\ArrayHelper::getValue($user, ‘username’);
// working with anonymous function
$fullName = \yii\helpers\ArrayHelper::getValue($user, function ($user, $defaultValue) {
return $user->firstName .
});
// using dot format to retrieve the property of embedded object
$street = \yii\helpers\ArrayHelper::getValue($users, ‘address.street’);
// using an array of keys to retrieve the value
$value = \yii\helpers\ArrayHelper::getValue($versions, [‘1.0’, ‘date’]);
|
Или map () создает простой массив значений ключей из более сложного массива:
01
02
03
04
05
06
07
08
09
10
11
12
13
|
$array = [
[‘id’ => ‘123’, ‘name’ => ‘aaa’, ‘class’ => ‘x’],
[‘id’ => ‘124’, ‘name’ => ‘bbb’, ‘class’ => ‘x’],
[‘id’ => ‘345’, ‘name’ => ‘ccc’, ‘class’ => ‘y’],
];
$result = ArrayHelper::map($array, ‘id’, ‘name’);
// the result is:
// [
// ‘123’ => ‘aaa’,
// ‘124’ => ‘bbb’,
// ‘345’ => ‘ccc’,
// ]
|
HtmlPurifier
Вы можете использовать HtmlPurifier для повышения безопасности обработки с помощью пользовательского ввода. Например, если кто-то вставит код SQL-инъекции в вашу форму, как описано выше, очистка его с помощью HtmlPurifier нейтрализует любую атаку.
1
|
echo HtmlPurifier::process($html);
|
Он использует библиотеку HTML Purifier с открытым исходным кодом.
StringHelper
StringHelper предоставляет несколько расширенных методов для работы со строками в PHP. Например, truncateWords () может уменьшить строку до определенного количества слов, но также сохранить надлежащий HTML в результате.
Создай свой помощник
Поскольку Meeting Planner, фокус серии стартапов , стал больше, я нашел полезным создать базового помощника, которого я мог бы использовать. На данный момент я объединил все в один файл с именем MiscHelpers.php :
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?php
namespace common\components;
use yii;
use yii\helpers\Url;
use common\models\User;
class MiscHelpers {
public static function buildCommand($meeting_id,$cmd=0,$obj_id=0,$actor_id=0,$auth_key=»)
…
public static function backendBuildCommand($meeting_id,$cmd=0,$obj_id=0,$actor_id=0,$auth_key=»)
…
public static function isProfileEmpty($user_id)
…
public static function getDisplayName($user_id,$no_email=false)
…
public static function getTimezoneList()
…
public static function fetchUserTimezone($user_id)
…
public static function getUrlPrefix()
…
}
|
Вы можете увидеть различные методы, включенные разных типов. Например, getDisplayName()
возвращает имя пользователя, адрес электронной почты или объединенные строки имени и фамилии, если они доступны.
Полезно создавать их один раз в одном месте, а не переписывать их по-разному в моделях по мере необходимости.
Я создал MiscHelpers.php, создав файл в / common / components и создав класс, который я мог бы вызывать во всем приложении.
buildCommand
Функция позволяет легко создавать ссылки для исходящих сообщений электронной почты, которые включают возможность аутентификации пользователей с помощью $auth_key
хранящегося в базе данных.
1
2
3
4
5
|
public static function buildCommand($meeting_id,$cmd=0,$obj_id=0,$actor_id=0,$auth_key=») {
// to do — build string of local or remote destination
// note: if change made, change in Message.php
return Url::to([‘meeting/command’,’id’=>$meeting_id,’cmd’=>$cmd,’actor_id’=>$actor_id,’k’=>$auth_key,’obj_id’=>$obj_id,],true);
}
|
В этом модуле нет ничего особенного, кроме того, что он напоминает цель стандартных помощников Yii, которые я описал ранее.
Везде, где я хочу использовать функции MiscHelper, я могу использовать следующий код:
1
2
3
4
5
6
|
<?php
use common\components\MiscHelpers;
…
<tr>
<td style=»color:#777; font-family:Helvetica, Arial, sans-serif; …
Hi <?php echo Html::encode(MiscHelpers::getDisplayName($user_id));
|
По мере роста Планировщика собраний я, вероятно, создам множество помощников, более традиционно организованных по актуальным вопросам.
В заключение
Помощники Yii, как их называют, полезны. И, как занятые кодеры, мы можем не знать, что они существуют. Я надеюсь, что вы видели некоторые вспомогательные функции в модулях Yii выше, которые со временем окажутся полезными для вас. И я надеюсь, что команда Yii будет расширять их с каждым обновлением.
Я надеюсь, что вы также подумаете о создании собственных помощников в своих приложениях, а не о дублировании общих методов в каждой модели.
По мере развития серии Yii2 я все чаще приветствую запросы на новые функции и темы. Вы можете опубликовать их в комментариях ниже или написать мне по электронной почте на моем сайте Lookahead Consulting .
Если вы хотите узнать, когда появится следующий учебник по Yii2, следуйте за мной @reifman в Твиттере или зайдите на страницу моего инструктора . Моя страница инструктора будет включать все статьи из этой серии, как только они будут опубликованы.
Чтобы изучить более продвинутое приложение Yii2 сейчас, ознакомьтесь с нашей серией запуска и Meeting Planner . Приложение теперь в альфа-версии, и вы можете запланировать встречи с друзьями. Вы также можете скачать код; это с открытым исходным кодом.