質問編集履歴

1 app.php追記

tixure55

tixure55 score 354

2017/05/06 16:19  投稿

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

    2870 questions

    Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る