zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    解决PHP处理图片时内存占用过高问题
    destoon下动态链接301到伪静态(ngnix)
    微信小程序转百度小程序代码
    解决:本图片来自微信公众号,未经许可,不能引用 问题
    MP4文件批量转码成MP3
    dt框架自定义url规则
    织梦后台基本参数无法保存解决办法
    关于tomcat启动没有进行编译或者编译报错的问题
    zf-安徽桐城关于(资源中心-数据录入)上传文件后没有进行处理Excel文件的原因
    zf-关于平台的用户名密码的设置
  • 原文地址:https://www.cnblogs.com/hxsen/p/12694562.html
Copyright © 2011-2022 走看看