我正在爲我的Laravel 5.1.17應用程序製作自定義外觀。我一直按照Laravel documentation以及this tutorial的步驟行事,事實上我能夠爲我的定製服務創建自定義外觀。Laravel 5.1自定義門面停止工作
然而,它突然間破裂了。該錯誤消息我得到的是:
FatalErrorException in Facade.php line 207:
Call to undefined method App\Facades\BookLookUp::test()
換句話說,我的門面是沒有得到約束,而是Laravel是我的中介BookLookUp extends Facade
類,而不是我的目的服務BookLookUp
類中尋找test()
方法。
很奇怪的是,它工作得很好,然後它就停止工作。我所做的似乎已經讓它突破了,我試圖通過複製我的相關文件並轉換名稱來添加另一個Facade,但不知何故,我的原始Facade仍未改變,停止工作。
另一個相關的奇怪之處是我試圖從頭開始重新創建我的Facade的所有必需的文件,它的工作原理很新。然後我去了,重新命名了Facade和相應的類/文件,並重新打開了它。
因此,似乎操縱該文件夾以某種方式破壞的東西,但這沒有任何意義。有沒有理由我的Facades不再工作?
以下是我的相關文件:
應用程序/服務/ BookLookUp.php
<?php
namespace App\Services;
class BookLookUp {
public function test()
{
return "foo";
}
}
應用/幕牆/ BookLookUp.php
<?php
namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class BookLookUp extends Facade
{
protected static function getFacadeAccessor()
{
return 'BookLookUp';
}
}
應用/ Providers/BookLookUpServiceProvider.php
<?php
namespace App\Providers;
use App\Services\BookLookUp;
use Illuminate\Support\ServiceProvider;
class BookLookUpServiceProvider extends ServiceProvider
{
/**
* Indicates if loading of the provider is deferred.
*
* @var bool
*/
protected $defer = true;
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
$this->app->singleton('BookLookUp', function() {
return new BookLookUp();
});
}
/**
* Get the services provided by the provider.
*
* @return array
*/
public function provides()
{
return ['App\Services\BookLookUp'];
}
}
應用程序/ HTTP/routes.php文件
<?php
Route::get('/', function() {
return BookLookUp::test();
});
有相同的確切問題。門面在Tinker中正常工作,但是我無法弄清楚爲什麼當我在一個php文件中調用(比如說一個控制器)時,我不知道爲什麼。感謝這篇文章! – edc598