model namespace - FatalErrorException Panggilan ke fungsi anggota - Laravel 4

Saya cukup yakin kesalahan FatalErrorException Call to a member function saya terkait dengan kesalahan penspasian nama tetapi tidak yakin alasannya. Model tampaknya dimuat dengan baik, hanya ketika saya memanggil metode model. Saya akan menjelaskan:

Saya mencoba menggunakan metode sayhi() di model. Struktur direktori saya seperti ini:

=Struktur Direktori=

Aplikasi/Pengendali

|-controllers
  |-api
    |-data
      |- AttendanceController.php
    |- ChartsController.php
    |- DataServeController.php
  |- ApiController.php
|- BaseController.php

Aplikasi/Model

 |-models
  |-api
    |- UkAudience.php :: sayhi()
  |- BaseModel.php
  |- DataServeController.php
  |- ApiController.php

= Perutean =

Saya menempuh rute seperti ini:

Route::get('someroute',array('as' => 'get-api-data', 'uses' => 'api\DataServeController@getIndex');

Dan DataServeController meluas dari 'ApiController'

= Pengendali =

Berikut adalah kutipan relevan dari masing-masing pengontrol:

Saya menyuntikkan dependensi antarmuka dan model dibuat di konstruktor 'ApiController()' seperti ini. Anda dapat melihat bagaimana ApiController() memasukkan antarmuka/instansiasi model.

// controllers/api/DataServeController.php

namespace Api;
use ApiController;

class DataServeController extends ApiController {

    public somefunction(){
        echo $this->UkAudience->sayhi();
    }
}

// controllers/ApiController.php

class ApiController extends BaseController {

/**
 * UKAudience Model
 * @var UKAudience
 */
protected $UKAudience;

public function __construct(Api\UKAudience $UKAudience){
     parent::__construct();
 $this->Broadcast = $Broadcast;
}

...

= Model ==

Jadi modelnya tampak dimuat tanpa keluhan Laravel.. Tetapi ketika saya mencoba menggunakan fungsi tersebut saya mendapatkan Symfony \ Component \ Debug \ Exception \ FatalErrorException Call to a member function sayhi() on a non-object

  // models/api/UKAudience.php  
  namespace Api;
use DataServe;

class UkAudience extends DataServe {


    public function sayhi(){
        return 'hello!!';
    }
} 

Setiap petunjuk/tips/bantuan akan sangat dihargai, terima kasih!


person HowApped    schedule 18.12.2013    source sumber


Jawaban (1)


Di mana Anda menetapkan $UKaudience ke sebuah pointer di konstruktor Anda? Jangan lupakan bagian ini:

public function __construct(Api\UKAudience $UKAudience){
     parent::__construct();
 $this->Broadcast = $Broadcast;
 $this->UKAudience = $UKAudience;  // This is required if you want to use objects in this class.
}

Anda kemudian dapat memanggil fungsi ini menggunakan: $this->UKAudience->sayhi()

person James Binford    schedule 18.12.2013