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
Mail 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 *-実行が成功すると、次の出力が表示されます-

FacadesServiceProvider

ステップ3 *- *App/TestTestFacades.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にアクセスすると、次の出力が表示されます-

ファサードのテスト