1

これがすでに回答されている場合は申し訳ありません。私はPHPでOOPを初めて使用します。私は、教育とテストの目的で mvc を構築し、それに関する知識を増やそうとしています。私はある時点で立ち往生しており、それを理解することはできません. それは簡単な解決策だと確信していますが、それを調べるための正しい用語/単語が何であるかはわかりません.

答えが既に存在する場合は、お知らせください。

これが私がやろうとしていることです:

class Load {
  public function __construct(){
  }

  public function model($file_name){
    include($file_name.'.php');
  }
}

class Home_model extends M_F_Model{
  function __construct() {
    parent::__construct();
  }

  public static function test_this_model($var){
    $result = $var.'+2';
    return $result;
  } 
}

class M_F_Controller {
  public $load;

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

class Home extends M_F_Controller{
  function __construct(){
    parent::__construct();
    $this->load->model('home_model');       
  }

  function index($var){
    $result = Home_model::test_this_model($var);
    return $result;
  }
}

将来含める可能性のある各クラス のクラスでのインスタンスを宣言する必要がなく、静的関数の使用Home_model::test_this_model();を避けたいと思います。$this->home_model->test_this_model();home_modelHome

事前に感謝します。さらに情報が必要な場合はお知らせください。

4

2 に答える 2

1
于 2012-08-14T02:04:20.883 に答える
1

実行に問題はありますか:

$this->home_model = $this->load->model('home_model');

ホームのコンストラクター内で、代わりにmodelローダー クラスの関数を変更して、ファイルを含めるだけでなく、新しいインスタンスを返すようにしますか? 何かのようなもの:

public function model($file_name) {
    include $file_name . '.php';
    $model = new $file_name();
    return $model;
}

$file_name(これは、ファイル内のクラス名に対応することを前提としています)

于 2012-08-14T00:47:26.243 に答える