laravel框架引入并使用自定义类库或自定义php文件
一、引入php文件
php框架提供的“辅助函数”、“集合”以及各种封装的类和函数也都是相当的丰富。但是有时候,我们还是需要自己定制某些函数。
这里以helper.php
函数库为例。
- 在下面路径中新增
helper.php
,放置自己的常用的函数[项目]/app/helper.php
- 引入方法
在composer.json
配置中的autoload
中加入以下的配置。
新增files选项,放置自己需要引入的路径,比如我的路径app/helpers.php
"autoload": { "psr-4": { "App\\": "app/" }, "classmap": [ "database/seeds", "database/factories" ], "files":[ "app/helpers.php" ] },
- 运行以下命令是配置生效
composer dump-auto
至此,该PHP就已经引入成功了,如果里面封装了函数,你可以直接调用你想要的函数了。
二、如何引入第三方类库
假如我自己写好了一个类库,或者我用composer工具require一个基础类。我们可以使用下面的方式,引入我们的框架中。
这里我们erusev/parsedown
为例。
- 首先使用composer把
erusev/parsedown
安装到我们的框架中。composer require erusev/parsedown
- 同样是修改
composer.json
配置中的autoload
选项,这次因为我们是类库。所以我们需要在把我们类的完整路径填入classmap
中。
- 因为laravel的类默认是安装在
vendor
中的,所以完整的路径是vendor/erusev/parsedown
- 其中
parsedown
是你的类所在的目录名就行了,它会自动发现并记录当前目录下的所有可用的类。"autoload": { "psr-4": { "App\\": "app/" }, "classmap": [ "database/seeds", "database/factories", "vendor/erusev/parsedown" ], "files":[ "app/helpers.php" ] },
- 同样,运行以下命令是配置生效
composer dump-auto
到这里,类库也引入成功了。
使用的时候,要看你类库内部是否有指定命名空间,如果有的话,就使用use
+命令空间+类名 来使用你的类,否则就可以直接使用。
像我的这个类,没有指命令空间。我可以use Parsedown
之后,然后使用new Parsedown()
类,或者我可以直接使用new \Parsedown()
这种方式。
三、composer
执行dump-auto
配置原理
files
类型的生效文件在:/vendor/composer/autoload_files.php
如下是helper.php
的文件引入
'b4e3f29b106af37a2bb239f73cdf68c7' => $baseDir . '/app/helpers.php',
classmap
类库生效的文件在:/verdor/composer/autoload_classmap.php
如下是Parsedown.php
类库引入
'Parsedown' => $vendorDir . '/erusev/parsedown/Parsedown.php',
每次执行dump-auto
命令的时候,composer
会拿相对应autoload_
文件对比比composer.json
中的配置,有新增则新增,如果发现文件有一些配置composer.json
已经没有了,就会被删除。
当然,我们目前使用的这两个文件,只是冰山一角,它还有这么多
ClassLoader.php
LICENSE
autoload_classmap.php
autoload_files.php
autoload_namespaces.php
autoload_psr4.php
autoload_real.php
autoload_static.php
installed.json