前言

在学习完教程中添加自定义助手函数文件时,还是得记录一下,感觉对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 协议》,转载必须注明作者和本文链接

php助手函数自定义,Laravel 添加自定义助手函数相关推荐

  1. Laravel 添加自定义全局函数

    第一步:在app目录下建立Common文件夹,在文件夹中创建helpers.php 第二步:在artisan中引入require __DIR__.'/app/Common/helpers.php';自 ...

  2. laravel 系统服务-助手函数

    1.应用场景 帮助熟悉laravel内部服务, 清楚快速地进行laravel开发. 2.学习/操作 1.array_except array_except 函数从数组移除指定的键值对 $array = ...

  3. Python matplotlib可视化:自定义轴标签格式化函数(在轴刻度上添加自定义的数值以及符号形式)、使用自定义函数在Matplotlib中为坐标轴刻度添加自定义符号(例如,货币符号¥$等)

    Python matplotlib可视化:自定义轴标签格式化函数(在轴刻度上添加自定义的数值以及符号形式).使用自定义函数在Matplotlib中为坐标轴刻度添加自定义符号(例如,货币符号¥$等) 目 ...

  4. 函数变量命名翻译助手工具下载及教程

    函数变量命名翻译助手教程 下载地址:翻译命名助手 细节: 1.自动翻译 2.选中[上边的文本框]的文字为划词翻译功能,取消选中则恢复 3.选中[下边的文本框]的文字会将选中的英文转化为函数变量名 4. ...

  5. jstl中添加自定义的函数

    转载自   jstl中添加自定义的函数 由于jstl中提供的函数未必能够满足我们的要求,而我们又希望能够像jstl提供的函数那样能够轻松方便使用,那么可以通过自定义函数补充jsltl函数.给jstl添 ...

  6. Hive SQL操作与函数自定义(二)

    9 Operators and UDFs 9.1 内置运算符 9.1.1 关系运算符 操作符 运算对象的类型 描述 A <=> B ALL 都是NULL时,返回TRUE,有一为NULL时, ...

  7. JMeter函数自定义开发

    JMeter之所以强大,就是因为其开源性和可扩展性,大家开发了大量的插件,也开发了不少的函数,这些函数如果能巧妙应用就能减少我们的工作量,实现各种复杂的计算和逻辑应用场景.很多人会觉得开发JMeter ...

  8. php 二维数组排序函数,php自定义二维数组排序函数array

    这次给大家带来php自定义二维数组排序函数array,php自定义二维数组排序函数array的注意事项有哪些,下面就是实战案例,一起来看一下. 这篇文章主要介绍了php自定义二维数组排序函数array ...

  9. R语言ggplot2可视化时间序列散点图、X轴和Y轴都是时间信息、使用as.POSIXct函数自定义指定Y轴的时间范围(setting time limits in y axis)

    R语言ggplot2可视化时间序列散点图.X轴和Y轴都是时间信息.使用as.POSIXct函数自定义指定Y轴的时间范围(setting time limits in y axis) 目录

最新文章

  1. u8 采购到货单中的 业务类型 没有表字典,是系统预置 存入表也是文字: 普通采购 - 固定资产...
  2. 微信分享,二次分享(移动web端)
  3. js+html5双人五子棋(源码下载)
  4. Linux Lernel Panic 报错解决思路
  5. 几个支持生成Python代码的UML工具
  6. [Kafka与Spark集成系列三] Spark编程模型
  7. sql 注射_令人惊讶的注射
  8. Java Object类的各个方法
  9. 中国风冬日节日必备梅花PNG免扣素材
  10. 【Dubbo篇】--Dubbo框架的使用
  11. 通过linux访问IPMI端口,Linux通过命令行设置IPMI的解决方法(图)
  12. 计算机boot进入u盘启动,深度u盘装系统进入boot设置教程
  13. 月球探测器中的计算机技术,月球探测器自主视觉导航技术的研究
  14. python 生成nc文件_如何python写nc文件
  15. 最怕虚拟机连不上网-记一次网卡消失
  16. 刚刚!蚂蚁全部互联网存款产品下架;阿里辟谣:被中央联合调查纯属谣言!...
  17. 数据挖掘学习:站在巨人的肩膀上
  18. 对于工作学习的一些感想
  19. Java实现求质数(素数)
  20. 第三篇 IT 技术支持工程师职业发展路径与技能要求

热门文章

  1. 使用Dagger 2在GWT中进行依赖注入
  2. java超出gc开销限制_超出了GC开销限制– Java堆分析
  3. java并发队列_Java并发教程–阻塞队列
  4. OSGi服务测试助手:ServiceCollector
  5. 使用Apache Camel 2.14的轻松REST端点
  6. 如何使用布隆过滤器在Java中建立大容量的内存缓存
  7. 如何在J2ME中创建MIDlet
  8. Spring Security配置错误
  9. 什么是Mockito Extra接口?
  10. Thymeleaf与Spring集成(第2部分)