IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> laravel创建全局公共函数,Helper类 -> 正文阅读

[PHP知识库]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() 字符串加密函数

注意

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

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-31 16:22:59  更:2021-07-31 16:23:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 1:14:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码