2016-07-06 9 views
0

こんにちは私はアプリケーションを構築していて、codeigniterと同様のことをしたいと思います。

私は、コントローラクラスを持っている:

class Controller{ 

    function __construct(){ 
     $this->view = new View(); 
     $this->load = new Loader(); 
    } 
} 

マイLoaderクラス:

class Loader{ 

    function __construct(){ 
     echo 'Loader Class Instanciated'; 
    } 

    public function model($model){ 
     $file = 'models/' . $model . '.php'; 
     if (file_exists($file)) { 
      require $file; 
      $this->model = new $model(); 
      return $this->model; 
     } 
    } 
} 

と私のヘルプControllerクラス:

class Help extends Controller{ 

    function __construct(){ 
     parent::__construct(); 
    } 

    public function index(){ 
     $this->view->render('index/index'); 
    } 

    public function other(){ 
     $model = $this->load->model('Help_Model'); 
     $model->meth(); 
    } 
} 

これまでのところ、すべての作品。しかし、私は次のようなものを持っています:

$this->load->model('Help_Model'); 
$this->Help_Model->meth(); 

どのように可能ですか?私がこの変数を使用しようとすると、未定義の変数Help :: $ Help_Model()のエラーが表示されます。

答えて

0

HelpModelではなく$ modelとして定義しています。あなたのローダークラスで、以下のようなことをしてください。 PHPをしばらく使用していませんが、それが役立つことを願っています。

iは、コントローラのインスタンスにアクセスできるように、クラスをコントローラにこの機能を追加しました:

ヘルプのその後
$this->{$model} = new $model(); 

$this->load->model('Help_Model'); 
$this->load->Help_Model->meth(); 
+0

のような種類で誰かを役に立てば幸いいいえ、私はまだエラーが発生しますNotice:未定義のプロパティ:Help :: $ Help_Model – BRG

+0

モードを返す必要はありませんまた、ヘルプのリターンを定義します。 ちょっと $ this-> load-> model( 'Help_Model'); $ this-> load-> Help_Model-> meth(); –

+0

はい、それでも私は欲しいものではありません。 – BRG

0

を行い、私はこのようにそれを修正するために管理しました。

public static function getInstance($controller){ 
     if(!isset(self::$_instance)){ 
      self::$_instance = new $controller; 
     } 
     return self::$_instance; 
    } 

、その後、私のようなローダークラスを変更:

public function model($model){ 
     $url = isset($_GET['url']) ? $_GET['url'] : null; 
     $controller = Controller::getInstance($url[0]); 
     $file = 'models/' . $model . '.php'; 
     if (file_exists($file)) { 
      require $file; 
      $controller->{$model} = new $model(); 
      log_message('INFO', 'Model: ' . $model . ' loaded successfully'); 
      return $controller->{$model}; 
     } 
    } 

し、それは、このようなとして働いていた:

$this->load->model('Help_Model'); 
$this->Help_Model->meth(); 

私はそれがproblemm

関連する問題