2013-12-18 25 views
0

我很确定我的FatalErrorException Call to a member function错误与命名空间错误有关,但不知道为什么。模型似乎加载正常,只有当我调用模型方法时。我将解释:命名空间模型 - FatalErrorException调用成员函数 - Laravel 4

我试图使用方法的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\[email protected]'); 

而且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!!'; 
    } 
} 

任何指针/提示/帮助将不胜感激,谢谢!

回答

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()

相关问题