请问该如何动态增加自定义类呢?

1. 运行环境

windwosows 10 64 位

1). 当前使用的 Laravel 版本?

Lumen (8.3.1) (Laravel Components ^8.0)

2). 当前使用的 php/php-fpm 版本?

7.3

2. 问题描述?

我现在想在项目中引入自定义类库,请问该如何动态的加载呢?我网查了下,都是更改 composer.json 文件中的 classmap 项,然后执行 composer dump-autoload -o,这样可以实现结果,但是这需要我每一次在引入自己定义的类库后,都需要执行同样的操作。
请问还有没有更加合适的方法?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

作为一个phper,有时间的时候建议一定要去熟读并了解一遍 PHP PSR 标准规范,其中自动加载规范和原理在PSR-4。

接下来给你说你这个问题的解决办法:

例如新增一个 Utils/Array.php 类

解决办法一:

直接在 app 目录下新建 Utils 文件夹,将 Array.php 放进去,那么命名空间就是 namespace App\Utils;,加载使用类的时候,就是 use App\Utils\Array

解决办法二:

如果想重新创建一个根命名空间,如在根目录下新建根命名空间。

  1. composer.json 新增下面的代码
    {
     "autoload": {
         "psr-4": {
             "Utils\\": "Utils/"
         }
     }
    }
  2. 在根目录新建Utils 文件夹,将 Array.php 放进去,那么命名空间就是 namespace Utils;,加载使用类的时候,就是 use Utils\Array
  3. 执行 composer dump-autoload
3年前 评论
sunhaozi (楼主) 3年前
讨论数量: 5

composer.json加个根目录作为自定义库的目录,把自定义的库放里面

3年前 评论

可以在composer.json的psr-4中添加一个新的命名空间,并指定目录,执行composer dump-autoload -o即可。

"autoload": {
    "psr-4": {
        "Lib\\": "lib/"
    }
}

例如以上代码,则是将app目录定义为Lib\\命名空间。

只要在目录下,添加文件并在Lib\\命名空间下,就可以被引入。

3年前 评论

大部分自定义类库可定义在 app 目录下,因它是 psr-4 标准加载的。如果不适合放在 app 目录下,使用 2楼的方法。关于 composer 自动加载的原理,参考 博客:Laravel Composer 自动加载原理

3年前 评论

作为一个phper,有时间的时候建议一定要去熟读并了解一遍 PHP PSR 标准规范,其中自动加载规范和原理在PSR-4。

接下来给你说你这个问题的解决办法:

例如新增一个 Utils/Array.php 类

解决办法一:

直接在 app 目录下新建 Utils 文件夹,将 Array.php 放进去,那么命名空间就是 namespace App\Utils;,加载使用类的时候,就是 use App\Utils\Array

解决办法二:

如果想重新创建一个根命名空间,如在根目录下新建根命名空间。

  1. composer.json 新增下面的代码
    {
     "autoload": {
         "psr-4": {
             "Utils\\": "Utils/"
         }
     }
    }
  2. 在根目录新建Utils 文件夹,将 Array.php 放进去,那么命名空间就是 namespace Utils;,加载使用类的时候,就是 use Utils\Array
  3. 执行 composer dump-autoload
3年前 评论
sunhaozi (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!