facebook twitter hatena line email

「Php/laravel/laravel5/facade」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
行15: 行15:
 
     {
 
     {
 
         return $this->_name;
 
         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\Animal'
 +
        );
 
     }
 
     }
 
  }
 
  }

2016年8月8日 (月) 05:35時点における版

facadeについて

laravelのfacadeの使い方について

実装

vi app/Services/Animal.php

namespace App;
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\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/