2017-06-30 112 views
-2

我有兩個類,一個(控制器類)從另一個擴展,然後在控制器類中,我定義了一個變量「加載」(在構造中),但是當我從另一個類擴展時,我無法從構造函數調用這個變量,有什麼想法? (道歉爲我的壞英語)。從另一個擴展類的構造函數的問題我不能在構造函數中使用方法

類控制器:

<?php 

class Controller { 
    protected $load; 

    public function __construct() { 
     $this->load = new Loader(); 

     if($_GET && isset($_GET['action'])) 
     { 
      $action = $_GET['action']; 

      if(method_exists($this, $action)) 
       $this->$action(); 
      else 
       die('Method not found.'); 

     } else { 
      if(method_exists($this, 'index')) 
       $this->index(); 
      else 
       die('Index method not found.'); 
     } 
    } 
} 

類家庭(它在哪裏擴展):

<?php 
class Home extends Controller 
{ 
    function __construct() { 
     parent::__construct(); 
     $this->load->model("HomeModel");// this line doesn't work 
    } 

    public function index() { 

     $articles = new HomeModel(); 
     $articles = $articles->getData(); 
     $nombres = ['jona', 'juan', 'jose']; 
     $view = new Views('home/home', compact("nombres", "articles")); 
    } 

} 

裝載器類:

<?php 

class Loader 
{ 

    function __construct() { 

    } 

    public function model($model) { 
     require('./models/'.$model.'.php'); 
    } 
} 
+1

什麼不行?你會得到什麼錯誤? –

+0

@AlexHowansky它只是不工作,這就像我從未宣佈該行 –

+0

@AlexHowansky當我宣佈「$ this-> load-> model(」HomeModel「);」在構造中,這是行不通的,但是當我在索引函數中聲明這個功能時這個工作正確 –

回答

0

錯誤 「 'HomeModel' 找不到」 會讓我相信你不需要'Home'類文件中包含'HomeModel'類的文件。

+0

Loader類做到了這一點,但是當我從'__construct()'聲明這個不起作用時,但是當我從''ndex()'函數中取消了這個操作時,這個工作正常。 –

相關問題