如果您问“ Yii是什么?” 查阅 Yii Framework简介 ,其中 介绍了Yii 的优点,并概述了Yii 2.0。
什么是助手?
在使用Yii2编程系列中 ,我指导读者使用PHP的Yii2框架。 在本教程中,我将简要概述助手。 在Yii中, 辅助程序是模块,它们对字符串,文件,图像,URL和HTML管理等常用库进行分组,并且易于扩展。
我还将分享一个在Meeting Planner中创建帮助器的示例,这是我们Envato Tuts +启动系列的重点。
在开始之前,请记住,我确实会尝试参加以下讨论。 如果您有任何问题或建议,请在下面发表评论,或通过Twitter @reifman与我联系 。
如果您注意到Programming Yii系列剧集之间的差距,那是因为我 去年 必须进行 脑部手术 。 感谢您的耐心和支持,很高兴能定期再次写信,我期待继续关注Yii2。
Yii2 Helper库
本质上,助手只是局部编码支持的模块。 这是Yii2的一部分提供的帮助程序列表-该列表比文档及其菜单现在更新了一些:
- ArrayHelper使用诸如安全查找值,映射,合并等功能简化了数组处理。
- 控制台可协助命令行功能,收集输入并输出彩色文本。
- FileHelper扩展了基本的PHP文件管理功能。
- FormatConverter转换不同的格式,目前主要是日期。
- HTML以编程方式生成常用HTML标签。
- HtmlPurifier清除用户的输入文本,以提高安全性。
- Imagine提供了yii2-imagine扩展提供的图像处理功能。
- Inflector为常见的转换提供有用的字符串函数。
- Json编码和解码JSON数据。
- Markdown将Markdown转换为HTML。
- StringHelper扩展了字符串的基本PHP函数。
- Url有助于以编程方式创建URL并记住它们以进行导航。
- VarDumper提供了高级的var_dump功能。
我通常在我的Yii应用程序中使用Html和Url帮助程序。 而且,您可能还记得,我在使用PHP构建启动时使用了Imagine帮助程序 :用户设置,个人资料图片和联系方式,以缩放上传的个人资料图片。
让我们简要介绍一些鲜为人知的助手。
ArrayHelper
如您所见, ArrayHelper提供了一些有用的面向数组的功能。
例如, getValue简化了从复杂数组中的键中查找值的操作:
// 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 . ' ' . $user->lastName;
});
// 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()从一个更复杂的数组构建一个简单的键值数组:
$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对其进行清理将消除所有攻击。
echo HtmlPurifier::process($html);
它利用了开源HTML Purifier库 。
StringHelper
StringHelper提供了一些扩展的方法来处理PHP中的字符串。 例如, truncateWords()可以将字符串减少为一定数量的单词,但也可以在结果中保留适当HTML。
建立自己的助手
随着Meeting Planner(入门系列的重点)变得越来越大,我发现创建可以使用的基本帮助程序很有帮助。 现在,我将所有内容组合到一个名为MiscHelpers.php的文件中 :
<?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()
返回用户名,电子邮件或可用的姓和名的串联字符串。
一次创建这些内容很有帮助,而不是根据需要在模型中以不同的方式重写它们。
我通过在/ common / components中创建一个文件并建立一个可以在整个应用程序中调用的类来创建MiscHelpers.php。
buildCommand
通过该功能,可以轻松地以编程方式为出站电子邮件建立链接,其中包括使用存储在数据库中的$auth_key
对用户进行身份验证的功能。
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 Helper的目标相似之外,此模块没有什么特别之处。
我想使用MiscHelper函数的任何地方,都可以使用以下代码:
<?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)); ?>,
随着Meeting Planner的发展,我可能会创建传统上围绕主题问题组织的各种帮助程序。
收盘时
Yii助手的名字很实用。 而且,作为繁忙的编码人员,我们可能不知道它们的存在。 我希望您在上面的Yii模块中看到了一些辅助功能,这些功能随着时间的推移将对您有用。 我希望Yii团队在每次更新时都继续扩大他们。
希望您也考虑在应用程序中构建自己的助手,而不是在每个模型中复制通用方法。
随着Yii2系列的发展,我越来越欢迎功能和主题要求。 您可以在下面的评论中发布它们,或在我的Lookahead Consulting网站上给我发送电子邮件 。
如果您想知道下一个Yii2教程何时到达, 请在Twitter上关注我@reifman或查看我的讲师页面 。 发布后,我的讲师页面将包含本系列中的所有文章。
要立即探索更高级的Yii2应用程序,请查看我们的启动系列和Meeting Planner 。 该应用程序现在处于Alpha版本中,您可以安排与朋友的会议。 您也可以下载代码; 它是开源的。
相关链接
翻译自: https://code.tutsplus.com/tutorials/programming-with-yii2-helpers--cms-26889