модели пространства имен — FatalErrorException Вызов функции-члена — Laravel 4

Я почти уверен, что моя ошибка FatalErrorException Call to a member function связана с ошибкой пространства имен, но не уверен, почему. Модели загружаются нормально, только когда я вызываю метод модели. Я объясню:

Я пытаюсь использовать метод sayhi() в структуре каталогов modelMy следующим образом:

=Структура каталогов=

Приложение/контроллеры

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

Приложение/Модели

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

= Маршрутизация =

Я выбрал маршрут следующим образом:

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

И DataServeController простирается от «ApiController»

= Контроллеры =

Вот соответствующие выдержки из соответствующих контроллеров:

Я ввожу зависимости интерфейса, и модели создаются в конструкторе «ApiController()», как это. Вы можете видеть, как ApiController() внедряет интерфейсы/создает экземпляры моделей.

// 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;
}

...

= Модель ==

Таким образом, модель загружается без жалоб Laravel. Но когда я пытаюсь использовать функцию, я получаю 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!!';
    }
} 

Любые указатели/советы/помощь будут очень признательны, спасибо!


person HowApped    schedule 18.12.2013    source источник


Ответы (1)


Где вы назначаете $UKaudience указателю в своем конструкторе? Не забудьте эту часть:

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.
}

Затем вы сможете вызвать эту функцию, используя: $this->UKAudience->sayhi()

person James Binford    schedule 18.12.2013