• 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
    
  • 相关阅读:
    vs编译器好多下划波浪线但不报错
    scala学习——(1)scala基础(下)
    scala学习——(1)scala基础(上)
    未能正确加载包“Microsoft.Data.Entity.Design.Package.MicrosoftDataEntityDesignPackage(转)
    如何完全卸载VS2010(亲自体验过) (转)
    2_C语言中的数据类型 (十)数组
    C++ STL 学习笔记__(8)map和multimap容器
    opencv配置(转)
    2_C语言中的数据类型 (九)数组
    郑捷《机器学习算法原理与编程实践》学习笔记(第五章 梯度寻优)5.2 Logistic梯度下降法
  • 原文地址:https://www.cnblogs.com/hxsen/p/12694562.html
Copyright © 2020-2023  润新知