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中。
  1. 因为laravel的类默认是安装在vendor中的,所以完整的路径是vendor/erusev/parsedown
  2. 其中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
posted @ 2020-04-13 22:30  houxin  阅读(662)  评论(0编辑  收藏  举报