php - Laravel 包自动发现未找到提供程序
问题描述
我正在为 Laravel 创建我的第一个包,但我无法通过 composer 正确安装它。它通过包的 使用 Laravel (v5.5+) 自动发现composer.json
,但是当它运行artisan package:discover
命令时,它找不到我的自定义 ServiceProvider。这是我的composer.json
:
{
"name": "mpemburn/api-consumer",
"description": "Configurable consumer for RESTful API's",
"type": "library",
"keywords": ["api","restful","laravel"],
"license": "MIT",
"authors": [
{
"name": "Mark Pemburn",
"email": "mark@pemburn.com"
}
],
"autoload": {
"psr-4": {
"Mpemburn\\ApiConsumer\\": "src/"
}
},
"require": {
"php": ">=7.4"
},
"extra": {
"branch-alias": {
"dev-master": "1.0-dev"
},
"laravel": {
"providers": [
"Mpemburn\\ApiConsumer\\ApiConsumerProvider"
]
}
},
"minimum-stability": "dev"
}
...这是ApiConsumerProvider
:
<?php
namespace Mpemburn\ApiConsumer;
use Illuminate\Support\ServiceProvider;
use Mpemburn\ApiConsumer\Handlers\ResponseHandler;
use Mpemburn\ApiConsumer\Interfaces\ResponseHandlerInterface;
class ApiConsumerProvider extends ServiceProvider
{
public function register(): void
{
// Bind ResponseHandlerInterface class(es)
app()->bind(ResponseHandlerInterface::class, ResponseHandler::class);
}
public function boot(): void
{
$this->publishes([
__DIR__.'/../config/api-consumer.php' => config_path('api-consumer.php'),
], 'config');
}
}
从周日开始,我已经仔细检查了这六种方式,但我无法弄清楚我做错了什么。
你可以在这里找到包:https ://github.com/mpemburn/api-consumer
提前感谢您提供的任何帮助!
编辑添加:composer 2.0.6 版,Laravel 8.16.0 版
解决方案
查看了 github 链接 - 问题是您的服务提供者类文件不在 src 目录中
移动目录ApiConsumerProvider.php
内部src
然后它应该可以工作。
您的 psr4 自动加载键指向命名空间的src
目录Mpemburn\ApiConsumer
。
推荐阅读
- python - ImportError:在 venv 中没有模块
- r - 如何调整弹性表格中的垂直对齐方式
- sql - 如何修改此查询以返回具有相同 Zip 但不同城市的所有地址?
- ag-grid - ag-grid Master/Detail 将外部过滤器应用于详细信息网格
- css - 我的网站右侧出现意外的边距/填充
- vba - 如果日期小于日期或数字小于 1,则删除整行
- python - 如何将导数的曲线拟合到同一张图上?
- hibernate - 具有多个数据源的 Spring Boot 应用程序中的事务注释未按预期工作
- javascript - Javascript非干扰时间延迟
- javascript - 没有使用winston node js库创建日志文件