如何深入理解Composer在Laravel等框架中自动发现并注入包的原理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计885个文字,预计阅读时间需要4分钟。
《Composer 本身不解析 extra.laravel.providers,也不自动注册任何服务提供者——所谓自动发现是 Laravel 框架自带的逻辑,依赖 php artisan package:discover 命令驱动。》
为什么改了 composer.json 却没生效
你手动在包的 composer.json 里加了 "providers": ["Vendor\Package\ServiceProvider"],但 Laravel 启动后依然没注册。这不是 Laravel “没看到”,而是它根本没机会读到——因为 Laravel 只从 vendor/composer/installed.php(Composer 2+)或 vendor/composer/installed.json(Composer 1)里提取信息,而不是直接扫描每个包的 composer.json 文件。
本文共计885个文字,预计阅读时间需要4分钟。
《Composer 本身不解析 extra.laravel.providers,也不自动注册任何服务提供者——所谓自动发现是 Laravel 框架自带的逻辑,依赖 php artisan package:discover 命令驱动。》
为什么改了 composer.json 却没生效
你手动在包的 composer.json 里加了 "providers": ["Vendor\Package\ServiceProvider"],但 Laravel 启动后依然没注册。这不是 Laravel “没看到”,而是它根本没机会读到——因为 Laravel 只从 vendor/composer/installed.php(Composer 2+)或 vendor/composer/installed.json(Composer 1)里提取信息,而不是直接扫描每个包的 composer.json 文件。

