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 协议》,转载必须注明作者和本文链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340060.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle 查询不同编号的时间最小记录_投稿 | ORACLE amp; PostgreSql 利用伪列删除完全重复的两行...

作者:缪晓丽DBA、数据库爱好者、从业10年。对 DB2、PostgreSQL、Oracle 均有较长的运维经验。本次演示的 test 表如下:01Oracle 的 rowidSQL 语句:DELETE FROM ( SELECT ROW_NUMBER() OVER (PARTITION BY id ORDER BY id) AS rn, id, name…

jpa 实体映射视图_JPA教程:映射实体–第1部分

jpa 实体映射视图在本文中,我将讨论JPA中的实体映射过程。 至于我的示例,我将使用与 我以前的一篇文章中使用的模式相同的模式 。 在前两篇文章中,我解释了如何在Java SE环境中设置JPA。 我不打算为Web应用程序编写设置过程,因为…

php连接函数config,smarty内置函数config_load用法实例

本文实例讲述了smarty内置函数config_load用法。分享给大家供大家参考。具体如下:{config_load}用于从配置文件中,加载到配置变量。详细用法如下:配置文件:foo.conf说明:[Table] 和 [Customer] 表示段落名称。复制代码…

python写前端图形界面_如何Tkinter模块编写Python图形界面

一、为何使用Tkinter而非PyQt众所周知,在Python中创建图形界面程序有很多种的选择,其中PyQt和wxPython都是很热门的模块包,这些第三方的图形界面模块功能强大、配置丰富,界面美观,是很多人的选择。州的先生也经常使用P…

适用于应用程序错误的AWS警报

监视对于任何实际应用都是关键的。 您必须知道正在发生的事情,并在发生问题时实时得到警报。 AWS拥​​有CloudWatch,可以自动为您提供大量指标。 但是,您必须定义一些自己的东西。 然后,您需要定义适当的警报。 在这里&#xff…

addcslashes php,php addcslashes函数怎么用

php addcslashes函数返回在指定字符前添加反斜杠的字符串。其语法是addcslashes(string,characters),参数string是必须的,规定要转义的字符串,characters是必须,规定要转义的字符或字符范围。addcslashes函数怎么用?作…

struct类型重定义 不同的基类型_C++构造数据类型

结构体(struct)定义:结构体是一个数据类型,是由多个不同类型的数据组成的数据集合。关键字为:struct 。优点:大大减少程序代码的离散性,使程序代码阅读更加符合逻辑。语法:struct 结构体类型名{ 成员类型 成…

卡夫卡队列_卡夫卡编年史队列基准

卡夫卡队列总览 最近,我被要求比较《卡夫卡》和《编年史》的性能。 没有两个产品是完全一样的,要进行公平的比较并不容易。 我们可以尝试运行类似的测试,看看我们得到了什么结果。 该测试基于Apache Kafka性能结果 。 测试使用了什么&#…

php zip怎么安装,php如何安装zip模块?(方法介绍)

php 安装zip模块为php安装zip扩展wget http://pecl.php.net/get/zip-1.13.5.tgz tar -zvxf zip-1.13.5.tgz cd zip-1.13.5 /home/xxx/php/bin/phpize出现错误:Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment va…

vs如何写多线程_java中的多线程的示例

在讨论多线程之前,让我们先讨论线程。线程是进程中轻量级的最小部分,可以与同一进程的其他部分(其他线程)并发运行。线程是独立的,因为它们都有独立的执行路径,这就是为什么如果一个线程中发生异常,它不会影响其他线程…

OCA第4部分中的Java难题

在Java Puzzlers的第四部分中,我们有一些与char类型有关的东西。 public class Puzzler { public static void main(String[] args){ char myChar a ; myChar; System.out.println(myChar); } } 您可能已经猜到了。 它将打印“ b”,其原因是char类型是…

matlab mex路径,使用matlab进行mex编译时的路径问题mexopts

matlab和vs 进行混合编程时总需要使用matlab编译mexFunction.cpp文件。这些文件免不了使用include下的*.h和lib下的*.lib文件。举matlab和vs 进行混合编程时总需要使用matlab编译mexFunction.cpp文件。这些文件免不了使用include下的*.h和lib下的*.lib文件。举例说明&#xff0…

python怎么运行ln函数_Python基础篇(五)

bool用于判断布尔值的结果是True还是False>>> bool("a")True>>> bool(3)True>>> bool("")False>>> bool(0)FalsePython中的elif类似于Java中的elseif>>> number (int)(input("input a number: ")…

hystrix应用 博客_用Hystrix保护您的应用程序

hystrix应用 博客在先前的帖子http://www.javacodegeeks.com/2014/07/rxjava-java8-java-ee-7-arquillian-bliss.html中,我们讨论了微服务以及如何使用(RxJava)的Reactive Extensions编排微服务。 但是,如果一项或多项服务因已停止…

python除法函数一般如何命名_关于python:当用于除法时,’/’和’//’之间有什么区别?...

使用一个对另一个有好处吗?在Python2中,它们似乎都返回相同的结果:>>> 6/32>>> 6//32请参考整数除法的问题,因为引入了//运算符进行整数除法。在python 3.0中,5 / 2将返回2.5,5 // 2将返…

艾默生变频器报警PHP,艾默生ct变频器报警ou 这个CT的变频器报警UU怎么解决?

1, 这个CT的变频器报警UU怎么解决?(1) 控制板Q1(15050026)坏。(2) 7840坏:在变频器通电时,用直流档,黑接5脚,红分别接6,7,8脚,值为2.5,2.5,5为正常,否则7840坏。(3) 小板坏:在变频器…

Project Reactor展开方法

最近,我的一位同事向我介绍了Project Reactor类型的expand运算符,在这篇文章中,我想介绍几种使用它的方式。 展开分页结果 考虑在名为City的模型上基于Spring Data的存储库: import org.springframework.data.jpa.repository.Jpa…

同时买票是怎么实现的_去巴黎玩怎么买地铁票最划算?| 巴黎最全交通攻略

次票、天票、机场票……傻傻分不清楚。不会法语怎么办?什么时候买有优惠?看这一篇全知道​​巴黎作为国际大都市,交通还是非常方便的。基本上80%的巴黎景点都能坐地铁到达,就在我们平常所说的小巴黎里。整个巴黎岛(Ile…

php输入地址查询,PHP查询用户IP所在地址

原创内容,转载请注明出处:https://www.myzhenai.com.cn/post/3042.html关键词:IP所在地址 IP地址 PHP获取ip地址相关内容:获取IP所处位置的Shell代码:https://www.myzhenai.com.cn/post/2917.htmlWordPress获取当前浏览…

javafx css_JavaFX技巧13:研究Modena CSS文件

javafx css到目前为止,这是最简单,最短的提示。 如果要执行以下任何操作: 了解如何使用CSS 使您的自定义控件看起来像标准控件 重用标准控件使用的SVG路径图形(例如,滚动条箭头) 弄清楚如何浏览标准控件…