Итак, я пытаюсь создать поставщика услуг Laravel.
TLDR;при использовании класса из моего каталога поставщиков поставщиков услуг он возвращает класс не найден, я думаю, что он не вызывается из моего автозагрузчика.
Полный вопрос:
Мне нужно включить несколько вещей, перечисленных ниже:
composer.json
{
...
"require": {
"erusev/parsedown-extra": "dev-master",
"symfony/browser-kit": "^4.2@dev"
}
}
Когда я пытаюсь использовать любой из них, я получаю ошибки, такие как
Class '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 внутри своих поставщиков и не загружает его из моего.