laravel创建全局公共函数,Helper类

laravel创建公共函数,Helper类

提出问题:

在任何一个PHP框架中,都不可能将你所有的需求封装好,也一定有些需求是你特有的,如果这些需要只用一次,那么哪里用哪里写即可。但是如果有经常使用的函数,而laravel并没有为我们封装,因此就需要自己封装,那么在laravel框架中,自己想要封装全局性的公共函数,该如何操作呢?另外封装后能否拿来即用,不要做太多的导入工作呢?下面就和我一起来探索吧。

分析问题:

对上述提出的问题进行分析,不难发现有这么几个需要关注的点。

  1. 这些函数需要全局的,也就是在laravel使用的过程中,任何一个地方都可以随时调用
  2. 不需要在用之前导入什么,也就是这些方法必须是,用即在,不用则走的状态。
  3. 这些写法还必须满足laravel和PHP的基本语法和规则,不能随便定义
  4. 定义这些方法时,不能重名
  5. 我们不可能把所有的方法一次封装完,因此就需要后续扩展简单,这就要求框架必须提前搭好,后续只是添加内容而已

经过上述的分析,我们的目的已经非常明确了,那么下来该如何去实现这些目的呢,一起来吧!

知识储备

providers (提供者)

laravel中有一个非常重要的概念,就是容器,那么往这些容器里面加什么呢,就可以加入提供者,也就是这里的 providers 。打开laravel项目的 app/Providers 目录,可以看到这里面已经有非常多的Providers ,有个是 AppService ,有的是AuthService等,各自有各自的功能,那么我们可以自己在该文件夹中定义自己的providers ,当然是可以的。

参考资料:
https://laravel.com/docs/8.x/providers

Helpers (助手)

laravel中自带了很多的助手方法,我们想要做的就是对这些方法进行扩充,根据我们自己的需求今天添加。

参考资料:
https://laravel.com/docs/8.x/helpers

解决步骤

自定义一个providers

在项目的根目录打开命令行输入下面的命令创建一个providers,名称叫HelperServiceProvider

php artisan make:provider HelperServiceProvider
注册提供器

所有服务提供器都在 config/app.php 配置文件中注册。该文件中有一个 providers 数组,用于存放服务提供器的类名 。默认情况下,这个数组列出了一系列 Laravel 核心服务提供器。这些服务提供器引导 Laravel 核心组件,例如邮件、队列、缓存等。

要注册提供器,只需要将其添加到数组:

'providers' => [
    // 其他服务提供器

    App\Providers\ComposerServiceProvider::class,
],
编辑自定义的HelperServiceProvider

打开刚才创建的文件app/Providers/HelperServiceProvider.php,并键入下面的内容,看起来是这样的。其中的register就是提供器的工作内容,可以看到他将获取 app/Helpers 文件夹下所有的php文件,并尝试require(引用)它。从这里我们也可以看出,将来我们定义的所有全局公共函数将放在该文件夹下。

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class HelperServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        foreach (glob(app_path('Helpers') . '/*.php') as $file) {
            require_once $file;
        }
    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
}

创建文件夹并自定义Helpers方法

经过上面的代码,我们知道了公共方法定义的位置,下来我们就来创建吧。首先:创建文件夹 app/Helpers

创建公共函数文件

在该文件下创建你想要定义的函数文件名,比如string.php。也可以对公共函数不进行分类统一的放在functions.php文件中都是可以的。
下面是笔者根据项目需求创建的目录结构和文件内容

文件结构:
在这里插入图片描述

文件内容:
在这里插入图片描述

使用和注意

至此,我们创建的公共函数已经完成了,接下来你可以在项目的任何地方使用自定义的函数了,比如笔者建立的strEncrypt() 字符串加密函数

注意

在创建函数的时候最好对函数是否已经存在进行判断,因此这里的函数是全局使用,因此有可能带来重名的风险。
另外就是创建的函数名尽量简单易懂。起名是程序员永远的伤痛

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值