【发布时间】:2018-11-03 03:23:07
【问题描述】:
所以我正在尝试创建一个 Laravel 服务提供者。
TLDR;当使用我的服务提供商供应商目录中的类时,它返回找不到类, 我认为它没有被我的自动加载器调用。
完整问题:
我需要包括下面列出的一些内容:
composer.json
{
...
"require": {
"erusev/parsedown-extra": "dev-master",
"symfony/browser-kit": "^4.2@dev"
}
}
当我尝试使用它们中的任何一个时,我都会遇到诸如
之类的错误找不到类“Symfony\Component\DomCrawler\Crawler”
我的服务提供者类如下所示:
/**
* Register the application services.
*/
public function register()
{
$this->app->make('Namespace\PackageName\DocsController');
}
现在 ParsedownExtra 是 PSR0,所以我已经通过仅包含它们来解决这个问题
/**
* Register the application services.
*/
public function register()
{
include_once __DIR__ .'/../vendor/erusev/parsedown/Parsedown.php';
include_once __DIR__ .'/../vendor/erusev/parsedown-extra/ParsedownExtra.php';
$this->app->make('Namespace\PackageName\DocsController');
}
这个我觉得挺乱的。
解决这个问题的正确方法是什么?
我看到 Laravel 文档中有一个额外的部分,但如果有人禁用包发现,这将不起作用。
https://laravel.com/docs/5.6/packages#package-discovery
如果应用程序处于本地开发中,则 DocsController 本质上会发布一个路由,该路由返回我使用 Symfony 包的模型(类);我相信用户应用程序正在他们自己的供应商内部寻找 Symfony,而不是从我的供应商那里加载它。
【问题讨论】:
-
嗨迈克尔! Composer 包和 Laravel 服务提供者是两个独立的东西,不一定相关。您能否添加一些有关您的总体目标/意图的细节?另外,
DocsController是什么? -
谢谢你,我会更新的
-
更新了标题并添加了更多信息
-
你是否正在尝试开发一个 Laravel 开发人员可以通过 Composer 安装的包?
-
@AkenRoberts 是的,这是正确的。由于某种原因,它没有正确自动加载我的包要求。
标签: laravel composer-php package