Laravel-facades
提供:Dev Guides
Laravel-ファサード
ファサードは、アプリケーションのサービスコンテナで利用可能なクラスへの static インターフェイスを提供します。 Laravel facades は、サービスコンテナの基底クラスに対する*静的プロキシ*として機能し、簡潔で表現力豊かな構文の利点を提供すると同時に、従来の静的メソッドよりもテスト容易性と柔軟性を維持します。
ファサードの作り方
以下は、Laravelでファサードを作成する手順です-
- *ステップ1 *-PHPクラスファイルを作成します。
- *ステップ2 *-そのクラスをサービスプロバイダーにバインドします。
- *ステップ3 *-そのServiceProviderを登録する +プロバイダーとしてのConfig \ app.php。
- *ステップ4 *-このクラスであるクラスを作成します + lluminate \ Support \ Facades \ Facade。
- *ステップ5 *-ポイント4をエイリアスとしてConfig \ app.phpに登録します。
ファサードクラスのリファレンス
Laravelには多くのファサードが付属しています。 次の表は、組み込みのFacadeクラスの参照を示しています-
Facade | Class | Service Container Binding |
---|---|---|
App | Illuminate\Foundation\Application | app |
Artisan | Illuminate\Contracts\Console\Kernel | artisan |
Auth | Illuminate\Auth\AuthManager | auth |
Auth (Instance) | Illuminate\Auth\Guard | |
Blade | Illuminate\View\Compilers\BladeCompiler | blade.compiler |
Bus | Illuminate\Contracts\Bus\Dispatcher | |
Cache | Illuminate\Cache\Repository | cache |
Config | Illuminate\Config\Repository | config |
Cookie | Illuminate\Cookie\CookieJar | cookie |
Crypt | Illuminate\Encryption\Encrypter | encrypter |
DB | Illuminate\Database\DatabaseManager | db |
DB (Instance) | Illuminate\Database\Connection | |
Event | Illuminate\Events\Dispatcher | events |
File | Illuminate\Filesystem\Filesystem | files |
Gate | Illuminate\Contracts\Auth\Access\Gate | |
Hash | Illuminate\Contracts\Hashing\Hasher | hash |
Input | Illuminate\Http\Request | request |
Lang | Illuminate\Translation\Translator | translator |
Log | Illuminate\Log\Writer | log |
Illuminate\Mail\Mailer | mailer | |
Password | Illuminate\Auth\Passwords\PasswordBroker | auth.password |
Queue | Illuminate\Queue\QueueManager | queue |
Queue (Instance) | Illuminate\Queue\QueueInterface | |
Queue (Base Class) | Illuminate\Queue\Queue | |
Redirect | Illuminate\Routing\Redirector | redirect |
Redis | Illuminate\Redis\Database | redis |
Request | Illuminate\Http\Request | request |
Response | Illuminate\Contracts\Routing\ResponseFactory | |
Route | Illuminate\Routing\Router | router |
Schema | Illuminate\Database\Schema\Blueprint | |
Session | Illuminate\Session\SessionManager | session |
Session (Instance) | Illuminate\Session\Store | |
Storage | Illuminate\Contracts\Filesystem\Factory | filesystem |
URL | Illuminate\Routing\UrlGenerator | url |
Validator | Illuminate\Validation\Factory | validator |
Validator (Instance) | Illuminate\Validation\Validator | |
View | Illuminate\View\Factory | view |
View (Instance) | Illuminate\View\View |
例
ステップ1 *-次のコマンドを実行して、 *TestFacadesServiceProvider というサービスプロバイダーを作成します。
php artisan make:provider TestFacadesServiceProvider
- ステップ2 *-実行が成功すると、次の出力が表示されます-
ステップ3 *- *App/Test で TestFacades.php というクラスを作成します。
*App/Test/TestFacades.php*
<?php
namespace App\Test;
class TestFacades{
public function testingFacades() {
echo "Testing the Facades in Laravel.";
}
}
?>
ステップ4 *-“ App/Test/Facades” で“ TestFacades.php” *というFacadeクラスを作成します。
*App/Test/Facades/TestFacades.php*
<?php
namespace app\Test\Facades;
use Illuminate\Support\Facades\Facade;
class TestFacades extends Facade {
protected static function getFacadeAccessor() { return 'test'; }
}
ステップ5 *- App/Test/Facades。で *TestFacadesServiceProviders.php というFacadeクラスを作成します。
*App/Providers/TestFacadesServiceProviders.php*
<?php
namespace App\Providers;
use App;
use Illuminate\Support\ServiceProvider;
class TestFacadesServiceProvider extends ServiceProvider {
public function boot() {
//
}
public function register() {
App::bind('test',function() {
return new \App\Test\TestFacades;
});
}
}
ステップ6 *-次の図に示すように、ファイル *config/app.php にサービスプロバイダーを追加します。
*config/app.php*
ステップ7 *-次の図に示すように、ファイル *config/app.php にエイリアスを追加します。
*config/app.php*
ステップ8 *- app/Http/routes.php。*に次の行を追加します
*app/Http/routes.php*
Route::get('/facadeex', function() {
return TestFacades::testingFacades();
});
- ステップ9 *-次のURLにアクセスして、ファサードをテストします。
http://localhost:8000/facadeex
- ステップ10 *-URLにアクセスすると、次の出力が表示されます-