โมเดลเนมสเปซ - 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