facebook twitter hatena line email

Php/laravel/laravel5/facade

提供: 初心者エンジニアの簡易メモ
移動: 案内検索

facadeについて

laravelのfacadeの使い方について

実装

vi app/Services/Animal.php

namespace App\Services;
class Animal
{
   private $_name = "animal";
   public function setName($name)
   {
        $this->_name = $name;
   }
   public function getName()
   {
        return $this->_name;
   }
}

vi app/Providers/AnimalServiceProvider.php

namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class AnimalServiceProvider extends ServiceProvider
{
   public function boot()
   {
   }
   public function register()
   {
       $this->app->bind(
           'animal',
           'App\Services\Animal'
       );
   }
}

vi app/Facades/Animal.php

namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class Animal extends Facade
{
   protected static function getFacadeAccessor() {
       return 'animal';
   }
}

vi config/app.php

'providers' => [
    App\Providers\AnimalServiceProvider::class,

実行

controllerとかで

\App\Facades\Animal::setName("dog");
echo \App\Facades\Animal::getName(); // dog

別のlogicに移動して以下を実行しても同じインスタンスが呼ばれるsingleton的な動き

echo \App\Facades\Animal::getName(); // dog

参考

https://laravel10.wordpress.com/2015/04/27/%E3%83%95%E3%82%A1%E3%82%B5%E3%83%BC%E3%83%89/