php助手函数自定义,Laravel 添加自定义助手函数

前言

在学习完教程中添加自定义助手函数文件时,还是得记录一下,感觉对composer知道的东西太少了,一些命令到底做了什么还是不知道,总结一下。

添加自定义助手函数文件

在开发项目的时候,有时候会定义一些函数,而这些函数又不能放在Laravel框架的助手函数文件中,如果我们把代码部署到生产环境中,再使用composer install安装扩展,又会覆盖我们之前修改的文件。

可见添加的函数必须要定义在我们的文件中,而且这个文件必须要纳入到git仓库中。这么一来觉得放在app目录还不错,这个目录是应用相关的目录,像中间件、模型、控制器都在这个这个目录。

所以我们在app目录下添加helpers.php文件,添加的函数就可以定义在这个文件中了。

自动加载助手函数

在上面我们创建了助手函数文件,把函数定义在app/helpers.php文件中了,但是这个文件不会被composer自动加载,如果要composer自动加载器加载我们定义的函数文件,必须要告诉composer。

如何告诉composer加载我们定义的助手函数文件呢,很简单,在项目根目录中的composer.json文件添加即可,怎么添加也是有讲究的,我把我添加的结果放在这里。

...

"autoload": {

"classmap": [

"database/seeds",

"database/factories"

],

"files": [

"app/helpers.php" #这行便是添加的助手函数

]

},

.....

通过上面贴出的代码我们可以知道,在autoload参数下的files参数可以定义要添加的文件,这个文件在添加时要注意路径,首先助手函数文件helpers.php在app目录下,而app目录和composer.json是在同一个目录下,所以添加助手函数时应该这么写app/helpers.php,也就是说通过这个相对路径可以找到对对应的文件,不然composer的文件加载会失败。

定义了是不是就完事了呢,还没有,composer在加载助手函数文件时,并不是通过composer.json文件来记载函数文件,而是通过composer加载器定义的几个文件,每次从这些文件中加载文件。

所以我们在定义了函数文件后需要执行composer dumpauotload指令,通过composer程序来生产加载文件。执行后会修改vendor/composer目录下的autoload_static.php和auoload_files.php文件。

到底在文件中修改了什么呢,其实就是把定义的helpers.php添加到这个两个文件中,看下添加后的文件内容。

// autoload_static.php

class ComposerStaticInit49922490dbe4935d5c7b9f60b23ceb32

{

public static $files = array (

// ......

'ed962a97bd972bc82007176b647d4e36' => __DIR__ . '/..' . '/facade/ignition/src/helpers.php',

'b4e3f29b106af37a2bb239f73cdf68c7' => __DIR__ . '/../..' . '/app/helpers.php',

);

// auoload_files.php

return array(

'ed962a97bd972bc82007176b647d4e36' => $vendorDir . '/facade/ignition/src/helpers.php',

'b4e3f29b106af37a2bb239f73cdf68c7' => $baseDir . '/app/helpers.php',

);

可以看到这两个文件中都有helpers.php文件,具体用到哪个文件呢,之后我会一篇文章来说明composer加载文件的原理。

总结

一个小小的助手文件,可以引出这么多知识点,如果对这些知识点不了解,只是知道这么做,而没有去了解为什么这么做,学习就像是囫囵吞枣,下次估计会忘了使用composer dumpautoload来生产加载规则文件,还不知道是哪里出了问题。

这么学习下来感觉一个小节可以学习很多知识点,时间消耗的也挺长了,写这篇文章都已经过去半个小时了,感觉也没有说什么,就是把过程捋了一遍。

就这样吧,如果把精力全部用在写文章,而忘记是学习了解框架的,有点本末倒置了,写文章的目的是加深学习,看看自己到底知道多少。

本作品采用《CC 协议》,转载必须注明作者和本文链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值