Hex 发表于 2007-10-15 13:28:52

CodeIgniter 模型的一个特点

反复调用
$this->load->model("someModel");
$this->load->model("someModel");
$this->load->model("someModel");
model 函数有规避机制,即仅调用一次。

china 发表于 2007-11-9 18:31:20

ding !!!!!!!!!!!!!!

多发一点啊......

Hex 发表于 2007-11-9 21:19:37

呵呵,一定多发!
不过还需要大家一起努力啊!

362860648 发表于 2013-9-5 18:28:57

飘过。
。。。

phper08 发表于 2013-9-7 21:20:23

本帖最后由 phper08 于 2013-9-7 21:24 编辑

public function model($model, $name = '', $db_conn = FALSE)
        {
                if (is_array($model))
                {
                        foreach ($model as $babe)
                        {
                                $this->model($babe);
                        }
                        return;
                }

                if ($model == '')
                {
                        return;
                }

                $path = '';

                // Is the model in a sub-folder? If so, parse out the filename and path.
                if (($last_slash = strrpos($model, '/')) !== FALSE)
                {
                        // The path is in front of the last slash
                        $path = substr($model, 0, $last_slash + 1);

                        // And the model name behind it
                        $model = substr($model, $last_slash + 1);
                }

                if ($name == '')
                {
                        $name = $model;
                }

                if (in_array($name, $this->_ci_models, TRUE))
                {
                        return;
                }

                $CI =& get_instance();
                if (isset($CI->$name))
                {
                        show_error('The model name you are loading is the name of a resource that is already being used: '.$name);
                }

                $model = strtolower($model);

                foreach ($this->_ci_model_paths as $mod_path)
                {
                        if ( ! file_exists($mod_path.'models/'.$path.$model.'.php'))
                        {
                                continue;
                        }

                        if ($db_conn !== FALSE AND ! class_exists('CI_DB'))
                        {
                                if ($db_conn === TRUE)
                                {
                                        $db_conn = '';
                                }

                                $CI->load->database($db_conn, FALSE, TRUE);
                        }

                        if ( ! class_exists('CI_Model'))
                        {
                                load_class('Model', 'core');
                        }

                        require_once($mod_path.'models/'.$path.$model.'.php');

                        $model = ucfirst($model);

                        $CI->$name = new $model();

                        $this->_ci_models[] = $name;
                        return;
                }

                // couldn't find the model
                show_error('Unable to locate the model you have specified: '.$model);
        }

phper08 发表于 2013-9-7 21:28:43

所谓的规避机制就是把类名放到一个数组里吧
页: [1]
查看完整版本: CodeIgniter 模型的一个特点