【发布时间】:2015-07-26 11:01:43
【问题描述】:
我正在尝试为搜索功能创建自己的自定义外观,但遇到了一点困难:
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 上的两个框代表问题顶部错误的格式和输出。
【问题讨论】:
-
你使用的是什么版本的 Laravel?你能再贴几行堆栈跟踪吗?
-
我猜你使用的是 Laravel 4.2。你是否对 Laravel 代码进行了任何更改?在第 163 行,我可以看到“$method = ($abstract == $concrete) ? 'build' : 'make';”,所以我看不出如何调用“create()”。
-
您是否更改了代码?你能再贴几行堆栈跟踪吗?
-
不,据我所知。我已经在堆栈跟踪中添加了,所以你可以看到发生了什么。如果我能提供更多信息,请告诉我。
标签: php laravel laravel-facade