6

検索機能用に独自のカスタム ファサードを作成しようとしていますが、少し問題があります。

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ファサードが次のように設定されている場所:

SearchServiceProvider

<?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は、質問の上部にあるエラーの書式設定と出力を表します。

4

1 に答える 1

3

これは少し古いスレッドであることを理解してください。ただし、新しい Facade を追加した後にコンパイル キャッシュがクリアされなかった場合に説明されている問題が発生する可能性があります。

実行する必要があります:

php artisan clear-compiled

于 2016-06-10T14:49:30.917 に答える