如何用Laravel包含你自己的帮助函数


Posted in PHP onMay 27, 2021

很多教程都会说,你在 composer.json 这个文件中通过添加一个自动加载的文件,就可以实现这个需求。但我认为这不是一个好的方式,当你在 helpers.php 文件中添加了更多的函数时,可读性将变得很差。

下面我将介绍一种方式,让你可以定义很多文件,来包含不同的函数。这将让我们的程序更加整洁和更具可读性。

首先创建一个 HelperServiceProvider.php 服务提供者文件:

php artisan make:provider HelperServiceProvider

使用上面命令,你将在 app\Providers 文件中生成 HelperServiceProvider.php

你可以简单的移除 boot() 方法,我们在这儿不会使用它。

在 register() 方法中我们添加以下代码:

public function register()
{
foreach (glob(app_path('Helpers') . '/*.php') as $file) {
require_once $file;
}
}

这个循环将会遍历 app/Heplers 目录下的所有文件,你可能已经猜到了,现在你可以在这个目录下随便创建文件,它们将会被加载到你的应用程序中,这些帮助函数在你的代码的任何地方都可以被访问(views, models, controllers...)

我们还需要加载这个服务提供者,打开 config/app.php,然后将 HelperServiceProvider 放在你的 AppServiceProvider 上面

...
App\Providers\HelperServiceProvider::class,
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
App\Providers\BroadcastServiceProvider::class,
...

现在让我们创建一个简单的函数,在 app/Helpers 目录中创建一个 Carbon.php 文件,文件中包含以下代码:

<?php

/**
* Carbon helper
*
* @param $time
* @param $tz
*
* @return Carbon\Carbon
*/
function carbon($time = null, $tz = null)
{
return new \Carbon\Carbon($time, $tz);
}

你不需要添加任何命令空间。如果你想,你可以使用 function_exists 检测这个函数是否存在。

现在,你可以在应用程序的任何你喜欢的位置使用帮助函数 carbon()。现在,如果您需要另一个返回特定格式的函数(仅针对本教程的用例),则可以在同一文件(Carbon.php)中输入该函数:

<?php

/**
* Carbon helper
*
* @param $time
* @param $tz
*
* @return Carbon\Carbon
*/
function carbon($time = null, $tz = null)
{
return new \Carbon\Carbon($time, $tz);
}
function carbonFormatted($time = null, $tz = null)
{
return carbon($time, $tz)->format('Y-m-d')
}

现在,您可以开始使用自己的PHP文件填充 app / Helpers目录,其中包含您经常使用的帮助程序 

以上就是如何用Laravel包含你自己的帮助函数的详细内容,更多关于用Laravel包含你自己的帮助函数的资料请关注三水点靠木其它相关文章!

PHP 相关文章推荐
php 什么是PEAR?
Mar 19 PHP
PHP gbk环境下json_dencode传送来的汉字
Nov 13 PHP
PHP读取汉字的点阵数据
Jun 22 PHP
php+curl 发送图片处理代码分享
Jul 09 PHP
php简单防盗链实现方法
Jul 29 PHP
详解PHP实现异步调用的4种方法
Mar 14 PHP
PHP微信开发之有道翻译
Jun 23 PHP
PHP进行批量任务处理不超时的解决方法
Jul 11 PHP
PHP用PDO如何封装简单易用的DB类详解
Jul 30 PHP
详解PHP字符串替换str_replace()函数四种用法
Oct 13 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
May 08 PHP
laravel 解决多库下的DB::transaction()事务失效问题
Oct 21 PHP
详解Laravel框架的依赖注入功能
May 27 #PHP
详解PHP Swoole与TCP三次握手
May 27 #PHP
如何用PHP实现分布算法之一致性哈希算法
如何用PHP实现多线程编程
May 26 #PHP
如何用PHP websocket实现网页实时聊天
详解PHP用mb_string处理windows中文字符
May 26 #PHP
详解PHP服务器如何在有限的资源里最大提升并发能力
You might like
PHP 和 MySQL 基础教程(三)
2006/10/09 PHP
php URL验证正则表达式
2011/07/19 PHP
window.addEventListener来解决让一个js事件执行多个函数
2012/12/26 Javascript
关于query Javascript CSS Selector engine
2013/04/12 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
2014/06/20 Javascript
javascript结合Canvas 实现简易的圆形时钟
2015/03/11 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
JavaScript中的条件判断语句使用详解
2015/06/03 Javascript
javascript实现在指定元素中垂直水平居中
2015/09/13 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
多种方式实现js图片预览
2016/12/12 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
Javascript中的作用域及块级作用域
2017/12/08 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
2018/04/21 Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
2019/01/21 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
Js图片点击切换轮播实现代码
2020/07/27 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
Python+django实现文件下载
2016/01/17 Python
Python中死锁的形成示例及死锁情况的防止
2016/06/14 Python
Python tkinter事件高级用法实例
2018/01/31 Python
朴素贝叶斯Python实例及解析
2018/11/19 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
Python将string转换到float的实例方法
2019/07/29 Python
Python While循环语句实例演示及原理解析
2020/01/03 Python
python动态文本进度条的实例代码
2020/01/22 Python
Pandas中DataFrame交换列顺序的方法实现
2020/12/14 Python
Zavvi西班牙:电子游戏、极客服装、Blu-ray、Funko Pop等
2019/05/03 全球购物
华为的Java面试题
2014/03/07 面试题
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
你懂得怎么写自荐信吗?
2013/12/27 职场文书
建筑安全责任书范本
2014/07/24 职场文书
商场促销活动策划方案
2014/08/18 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
安全生产工作汇报材料
2014/10/28 职场文书