引言
Laravel框架内提供了 Str,Arr 等帮助类,用于字符串操作,数组操作,将PHP内置的 str 开头的函数,和 array 开头的函数,使用面向对象的方式进行操作。
如果我们要写一些全局使用的助手函数,应该如何加载到 Laravel 框架内呢?本文就来说一说。
学习时间
首先我们创建一个文件,比如路径地址就在 app/lib/helper.php 内。然后声明一个函数:
if (! function_exists('checkWorking')) {function checkWorking(){return "Hey, it's working!";}
}
然后打开 composer.json 文件,在文件加载的配置部分,添加如下信息:
"autoload": {...."files": ["app/lib/helpers.php"]
},
这样写框架还不会自动加载,我们需要使用 composer 指令更新系统的自动加载文件。在根目录,命令行内执行:
之后在框架内的任何地方,就可以直接访问 helper 文件内声明的函数了。
Laravel 的方式
我们也可以使用laravel加载类库,注册类库的办法,进行助手函数文件的动态加载。首先创建一个 ServiceProvider,命令行内执行:
php artisan make:provider HelperServiceProvider
这会创建 HelperServiceProvider 文件,在 registe 方法内实现加载文件的逻辑:
public function register()
{foreach (glob(app_path().'/lib/*.php') as $filename){require_once($filename);}
}
这一段加载很直观,就是使用 glob 函数扫描目录 app/lib/*.php 规则匹配的所有文件,并使用 require_once 方法加载进来。
当然了,写完这些,还是需要更新自动加载的代码,命令行执行
效果与上一节相同。可是更方便在程序内处理,因为我们把加载逻辑,植入到了框架加载流程内,比较容易控制。
写在最后
本文通过2种方式动态加载助手函数到全局,一种是修改 composer 配置文件,一种是在 laravel 内使用“服务提供者”进行注册。
我们更倾向于于第二种方式,因为维护程序较为方便,也更直观,沿袭了框架开发的统一原则。
Happy coding :-)
我是 @程序员小助手 ,持续分享编程知识,欢迎关注。