使用Yii2编程:助手

最终产品图片
您将要创造的

如果您问“ 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数据。
  • MarkdownMarkdown转换为HTML。
  • StringHelper扩展了字符串的基本PHP函数。
  • Url有助于以编程方式创建URL并记住它们以进行导航。
  • VarDumper提供了高级的var_dump功能。

我通常在我的Yii应用程序中使用Html和Url帮助程序。 而且,您可能还记得,我在使用PHP构建启动时使用了Imagine帮助程序 :用户设置,个人资料图片和联系方式,以缩放上传的个人资料图片。

让我们简要介绍一些鲜为人知的助手。

ArrayHelper

使用Yii编程-数组帮助器方法

如您所见, 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

使用Yii帮助程序进行编程-HtmlPurifierorg库的示例演示

您可以使用HtmlPurifier来提高用户输入处理的安全性。 例如,如果有人如上所述将SQL注入代码粘贴到您的表单中,则使用HtmlPurifier对其进行清理将消除所有攻击。

echo HtmlPurifier::process($html);

它利用了开源HTML Purifier库

StringHelper

使用Yii编程-字符串帮助器方法

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值