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 方法,但这不能正常工作。但是如果我 print_r $this->model 在控制器中,返回结果如下:

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

这意味着扩展模型类中的代码,但为什么不进入主模型类?

谢谢。

4

0 回答 0