「Php/laravel/laravel5/facade」の版間の差分
提供: 初心者エンジニアの簡易メモ
(同じ利用者による、間の1版が非表示) | |||
行4: | 行4: | ||
==実装== | ==実装== | ||
vi app/Services/Animal.php | vi app/Services/Animal.php | ||
− | namespace App; | + | namespace App\Services; |
class Animal | class Animal | ||
{ | { | ||
行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\Services\Animal' | ||
+ | ); | ||
} | } | ||
} | } |
2016年8月8日 (月) 07:05時点における最新版
目次
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/