Я пытаюсь создать свой собственный фасад для функции поиска, но у меня возникли небольшие трудности:
type: Symfony\Component\Debug\Exception\FatalErrorException
message: Call to undefined method Illuminate\Foundation\Application::create()
file: H:\myproj\vendor\laravel\framework\src\Illuminate\Container\Container.php
line: 165
Эта ошибка вызвана попаданием моего кода:
Search::indexObject();
Где моя Search
Фасад настроен следующим образом:
<?php
namespace MyProj\Search;
use Illuminate\Support\ServiceProvider;
class SearchServiceProvider extends ServiceProvider {
public function register() {
$this->app->bind('search', 'MyProj\Search\Search');
}
}
<?php
namespace MyProj\Facades;
use Illuminate\Support\Facades\Facade;
class Search extends Facade {
public static function getFacadeAccessor() {
return 'search';
}
}
<?php
namespace MyProj\Search;
use Elasticsearch\Client;
use Credential;
class Search {
private $elasticSearchClient;
public function __construct() {
$this->elasticSearchClient = new Client(array(
'hosts' => [Credential::ElasticSearchHost]
));
}
public function indexObject($object) {
// Code
return $this->elasticSearchClient->index($params);
}
public function get() {
return $this->$elasticSearchClient;
}
}
Я бегал composer dump-autoload
без успеха, и мой фасад и поставщик услуг загружен в app.php
следующее:
'Search' => 'MyProj\Facades\Search',
'MyProj\Search\SearchServiceProvider'
Последние 30 минут я потратил на отладку и поиск этой ошибки без каких-либо исправлений. Что тут происходит?
РЕДАКТИРОВАТЬ: я добавил в трассировку стека, который вы можете увидеть ниже. Кроме того, я вижу, что getFacadeAccessor()
называется правильно, но все, что находится за пределами моего понимания.
Подсвеченный кадр представляет последнее появление нормальной работы, оба кадра включены Handler.php
представить форматирование и вывод ошибки в верхней части вопроса.
Примите во внимание, что это немного старый поток, однако вы получите описанные проблемы, если скомпилированный кеш не был очищен после добавления нового Фасада.
Вы должны запустить:
php artisan clear-compiled
Других решений пока нет …