[CodeIgniter4]-辅助函数

2020-03-05 16:18:56 浏览数 (1)

辅助函数

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

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

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

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

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

加载助手

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

代码语言:javascript复制
helper('name');

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

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

代码语言:javascript复制
helper('cookie');

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

代码语言:javascript复制
helper(['cookie', 'date']);

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

注解

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

注解

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

从非标准位置加载

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

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

代码语言:javascript复制
helper('ModulesBlogblog');

注解

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

使用助手

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

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

代码语言:javascript复制
<?php echo anchor('blog/comments', 'Click Here');?>

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

“扩展”助手

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

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

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

注解

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

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

代码语言:javascript复制
// 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);
}

怎么办?

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

0 人点赞