laravel5の下記の記事を読んで、laravel5のサービスプロバイダを学習中なのですが、記事どおりの挙動が実現できません。
Laravelでインスタンスを便利に使いまわす(サービスロケータ)
やりたいこと:
TestControllerの$hoge->sayHello();でこんにちは!と表示させる。
http://localhost:8000/testにアクセスすると、そういう気分じゃないんだ...と表示される。
php artisan -V
Laravel Framework 5.4.21
php
1 1 <?php 2 2 3 3 namespace App\Http\Controllers; 4 4 5 5 use Illuminate\Http\Request; 6 6 use App\Http\Controllers\Controller; 7 7 use App\Hoge; 8 8 9 9 class TestController extends Controller 10 10 { 11 11 public function index(Hoge $hoge) 12 12 { 13 13 // 「そういう気分じゃないんだ...」だそう。 14 14 // つまりインスタンスが新しく生成されていまっている。 15 15 $hoge->sayHello(); 16 16 17 17 // 「こんにちは!」 18 18 //\App::make('hoge')->sayHello(); 19 19 } 20 20 }
php
1//routes/web.php 220 Route::get('test', 'TestController@index');
php
1 1 <?php 2 2 3 3 namespace App\Providers; 4 4 5 5 use Illuminate\Support\ServiceProvider; 6 6 use App\Hoge; 7 7 8 8 class HogeServiceProvider extends ServiceProvider 9 9 { 10 10 /** 11 11 * Bootstrap the application services. 12 12 * 13 13 * @return void 14 14 */ 15 15 public function boot() 16 16 { 17 17 // 18 18 } 19 19 20 20 /** 21 21 * Register the application services. 22 22 * 23 23 * @return void 24 24 */ 25 25 public function register() 26 26 { 27 27 $hoge = new Hoge(); 28 28 $hoge->message = 'こんにちは!'; 29 29 //$this->app->instance('hoge', $hoge); 30 30 $this->app->instance(Hoge::class, $hoge); 31 31 } 32 32 }
php
1//app/Hoge.php 21 <?php 3 2 4 3 namespace App; 5 4 6 5 class Hoge 7 6 { 8 7 public $message = 'そういう気分じゃないんだ...'; 9 8 10 9 public function sayHello() 11 10 { 12 11 echo $this->message; 13 12 } 14 13 }
php
1//config/app.php 2179 App\Providers\HogeServiceProvider::class,
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/06 10:38