命名空间模型 - FatalErrorException调用成员函数 - Laravel 4

时间:2013-12-18 12:23:56

标签: php laravel-4

我很确定我的FatalErrorException Call to a member function错误与命名空间错误有关,但不确定原因。模型似乎加载正常,只有当我调用模型方法时才会加载。我会解释一下:

我试图在modelMy目录结构中使用sayhi()方法,如下所示:

=目录结构=

应用/控制器

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

...

= Model ==

所以模型似乎在没有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!!';
    }
} 

非常感谢任何指针/提示/帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

在哪里为构造函数中的指针指定$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()