0

モジュール作成用のクラスを書きました。そのモデルオブジェクトを除いて正しく実行されます。

モデルクラス:

class Model{
    public static  $db;
    protected $_table_name;
    public function __construct() {
        self::$db =& DB::singleton();
    }
    public function get($rows="*",$where=null,$page_no=null,$limit=null,$order_by=null,$table_name=null){
        if(!isset($table_name)||empty($table_name)){
            self::$db->table=$this->_table_name;
        }else{
            self::$db->table=$table_name;
        }
        self::$db->rows = $rows;
        self::$db->limit=$limit;
        self::$db->where=$where;
        self::$db->page_no=$page_no;
        self::$db->order_by=$order_by;
        return self::$db->read();
    }

    public function delete($id,$table){
        self::$db->table = $table;
        self::$db->where ="id='{$id}'";
        self::$db->delete();
        return 1;
    }
    public function drop_table($table){
        self::$db->table=$table;
        self::$db->drop_table();
        return 1;
    }
    public function get_module_name(){
        return $this->_table_name;
    }


    public function set_table($table_name){
        $this->_table_name=$table_name;
    }
}

拡張クラス :

class m_publication_categories extends model
{
    protected $_table_name = 'publication_categories'; 
}

コントローラー:

class Controller{
    public $db;
    public $model;

    public function __construct(){
        core::$theme->setup();
        $model_class_name = "m_".get_called_class();
        $this->model=new $model_class_name();
    }

    public function listAction(){
        $module_name = $this->model->get_module_name();
        $module_model = new m_modules();

        /**moduleinfo*/
        $module = $module_model->get("*","table_name='{$module_name}'");
        $module = $module[0];
        $module_columns = $module_model->list_fields($module->id);
        $data = $this->model->get();

        print_r($data);die;
        $this->assign('data',$data);
        $this->assign('module_columns' , $module_columns);
        $this->assign('module',$module);
        $this->display('list_module_data','modules');
    }
}

コントローラー $this->model->get から model::get メソッドを使用したいのですが、正しく動作しません。しかし、コントローラーで $this->model を print_r すると、次のような結果が返されます。

m_publication_categories Object ( [_table_name:protected] => publication_categories )

これは extends モデル クラスのコードを意味しますが、メイン モデル クラスに入らないのはなぜですか?

ありがとう。

4

0 に答える 0