

Laravel を学習中の者です。  
以下のコードにつきまして、お聞きしたい部分があります。  
以下はビュー部分の `index.blade.php` です

[code]

    @extends('layouts.helloapp')
    
    @section('title','Person.index')
    
    @section('menubar')
      @parent
      インデックスページ
    
    @endsection
    
    @section('content')
      <table>
        <tr><th>Data</th></tr>
        @foreach ($items as $item)
    
          <tr>
            <td>{{$item}}</td>
            <td>{{$item->getData()}}</td>
          </tr>
        @endforeach
      </table>
    @endsection
    
    @section('footer')
    copyright 2017 tuyano.
    @endsection
    
[/code]

以下は、モデルクラスである `Person.php` です

[code]

    <?php
    
    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Person extends Model
    {   
        public function getData()
        {
            return $this->id . ':' . $this->name . '(' . $this->age . ')';
        }
    
    }
    
[/code]

以下はコントローラー部分である、 `PersonController.php` です

[code]

    <?php
    
    namespace App\Http\Controllers;
    use App\Person;
    use Illuminate\Http\Request;
    
    class PersonController extends Controller
    {
        public function index(Request $request)
        {
            $items = Person::all();
            // if($items instanceof Person){
            //     die('ok');
            // }else{
            //     die('ng');
            // }
    
            // var_dump(get_object_vars($items));
            // exit();
            return view('person.index',['items' => $items]);
    
        }
    }
    
[/code]

以下はルート部分である、 `web.php` です。

[code]

    <?php
    
    /*
    |--------------------------------------------------------------------------
    | Web Routes
    |--------------------------------------------------------------------------
    |
    | Here is where you can register web routes for your application. These
    | routes are loaded by the RouteServiceProvider within a group which
    | contains the "web" middleware group. Now create something great!
    |
    */
    
    
    // Route::post('hello','HelloContoroller@post');
    
    //use App\Http\Middleware\HelloMiddleware;
    
    Route::get('hello/add','HelloController@add');
    Route::post('hello/add','HelloController@create');
    
    Route::get('hello','HelloController@index');
    
    Route::get('hello/edit','HelloController@edit');
    Route::post('hello/edit','HelloController@update');
    
    Route::get('hello/del','HelloController@del');
    Route::post('hello/del','HelloController@remove');
    Route::get('hello/show','HelloController@show');
    Route::get('person','PersonController@index');
    Route::get('test','HelloController@foo');
    
[/code]

上記 `http://localhost/person` にアクセスすると、以下の画面が表示されます。

[![](https://i.stack.imgur.com/q6eze.png)](https://i.stack.imgur.com/q6eze.png)

お聞きしたい部分なのですが、 `index.blade.php` 内の「`$item`」が何故 `getData`
メソッドを呼び出せるのか、といった点です。

`PersonControler.php` 内で `var_dump` などし `$items` の中身を確認したのですが、 `getData`
メソッドは存在していませんでした。  
何故、 `getData` メソッドを呼び出すことができるのでしょうか？


CC BY-SA 4.0
2019-06-01T13:10:56.667
55441
2019-06-10T06:27:06.750
2019-06-10T06:27:06.750
2238
32912
question
laravel laravel-5
collectionオブジェクトについて