前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[CodeIgniter4]-辅助函数

[CodeIgniter4]-辅助函数

作者头像
landv
发布2020-03-05 16:18:56
1.5K0
发布2020-03-05 16:18:56
举报
文章被收录于专栏:landvlandv

辅助函数

顾名思义,帮助程序可以帮助您完成任务。每个帮助文件只是特定类别中功能的集合。有URL帮助程序,可以帮助创建链接,有Form Helpers可以帮助您创建表单元素,Text Helpers可以执行各种文本格式设置例程,Cookie Helpers可以设置和读取Cookie,File Helpers可以帮助您处理文件,等等。

  • 加载助手
    • 从非标准位置加载
  • 使用助手
  • “扩展”助手
  • 怎么办?

与CodeIgniter中的大多数其他系统不同,辅助程序不是以面向对象的格式编写的。它们是简单的程序功能。每个助手功能执行一项特定任务,而不依赖于其他功能。

默认情况下,CodeIgniter不会加载帮助程序文件,因此使用帮助程序的第一步是加载它。加载后,它将在您的控制器和 视图中全局可用。

帮助程序通常存储在您的system / Helpers或 application / Helpers目录中。CodeIgniter将首先出现在您的 application / Helpers目录中。如果目录不存在或指定的帮助程序不存在,则CI会在全局system / Helpers /目录中查找。

加载助手

使用以下方法加载帮助文件非常简单:

helper('name');

其中,name是帮助程序的文件名,不带.php文件扩展名或“ helper”部分。

例如,要加载名为cookie_helper.phpCookie帮助器文件 ,您可以这样做:

helper('cookie');

如果您一次需要加载多个助手,则可以传入一个文件名数组,所有文件名都将被加载:

helper(['cookie', 'date']);

可以在控制器方法中的任何地方(甚至不是View文件中)加载帮助程序,尽管这不是一个好习惯,只要在使用它之前就将其加载即可。您可以在控制器构造函数中加载帮助程序,以便它们在任何函数中自动可用,也可以在需要它的特定函数中加载帮助程序。

注解

上面的Helper加载方法不会返回值,因此请勿尝试将其分配给变量。只需使用如图所示。

注解

URL帮助器始终处于加载状态,因此您无需自己加载它。

从非标准位置加载

可以从application / Helpers和 system / Helpers之外的目录中加载Helpers,只要可以通过已在Autoloader配置文件的PSR-4部分中设置的名称空间找到该路径即可。您将在Helper的名称之前添加可以位于其名称空间的名称。在该名称空间目录中,加载程序希望它位于名为的子目录中Helpers。一个例子将有助于理解这一点。

对于此示例,假设我们已将所有与Blog相关的代码分组到其自己的名称空间中Example\Blog。这些文件位于我们的服务器上的 / Modules / Blog /中。因此,我们会将博客模块的帮助程序文件放在 / Modules / Blog / Helpers /中。一个blog_helper文件将在 /Modules/Blog/Helpers/blog_helper.php。在我们的控制器内,我们可以使用以下命令为我们加载帮助程序:

helper('Modules\Blog\blog');

注解

以这种方式加载的文件中的功能未真正命名空间。命名空间只是用作查找文件的便捷方式。

使用助手

加载包含要使用的功能的帮助程序文件后,将以与标准PHP函数相同的方式进行调用。

例如,要anchor()在您的一个视图文件中使用该函数创建链接,请执行以下操作:

<?php echo anchor('blog/comments', 'Click Here');?>

其中“单击此处”是链接的名称,“博客/注释”是您要链接的控制器/方法的URI。

“扩展”助手

@todo:确定如何扩展这些名称空间等等?

要“扩展”助手,请在您的application / helpers /文件夹中创建一个文件,其名称与现有助手相同,但前缀为MY_ (此项是可配置的。请参见下文)。

如果您需要做的就是向现有的助手添加一些功能-可能添加一个或两个功能,或者更改特定助手功能的运行方式-那么用您的版本替换整个助手就太过头了。在这种情况下,最好简单地“扩展”助手。

注解

术语“扩展”被宽松地使用,因为助手功能是过程性的和离散的,并且不能在传统的程序意义上进行扩展。在后台,这使您能够添加或替换助手提供的功能。

例如,要扩展本机Array Helper,您将创建一个名为application / helpers / MY_array_helper.php的文件,并添加或覆盖函数:

// any_in_array() is not in the Array Helper, so it defines a new function
function any_in_array($needle, $haystack)
{
        $needle = is_array($needle) ? $needle : array($needle);

        foreach ($needle as $item)
        {
                if (in_array($item, $haystack))
                {
                        return TRUE;
                }
        }

        return FALSE;
}

// random_element() is included in Array Helper, so it overrides the native function
function random_element($array)
{
        shuffle($array);
        return array_pop($array);
}

怎么办?

在目录中,您将找到所有可用的帮助程序文件的列表。浏览每个人以查看其工作。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 辅助函数
    • 加载助手
      • 从非标准位置加载
    • 使用助手
      • “扩展”助手
        • 怎么办?
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档