作者:蓝天ab白云 | 来源:互联网 | 2013-08-06 09:36
在thinkphp教程中可能有m方法的讲解,对于此我个人认为里边的教程仅是交给了我们怎么去应用,没有让我们深入的去理解他写的方法:
在没有定义任何模型的时候,我们可以使用下面的方法实例化一个模型类来进行操作:
//实例化User模型
$User = M('User');
//执行其他的数据操作
$User->select();
这种方法最简单高效,因为不需要定义任何的模型类,所以支持跨项目调用。缺点也是因为没有自定义的模型类,因此无法写入相关的业务逻辑,只能完成基本的CURD操作。
thinkphp手册中对此只进行了简单的讲解,深刻的剖析是没有的,现在我们就来深入的理解一下
function M($name='', $tablePrefix='',$cOnnection='') {
static $_model = array();//定义一个静态变量数组,
if(strpos($name,':')) {//检测是否存在':',来判断是否指定基础模型
list($class,$name) = explode(':',$name);//list函数将拆分的字符串分别赋值
}else{
$class = 'Model';
}
if (!isset($_model[$name . '_' . $class]))
$_model[$name . '_' . $class] = new $class($name,$tablePrefix,$connection);//检测之前是否已经存在这个模型,没有则将新定义的类模型存入静态变量中
return $_model[$name . '_' . $class];//将新定义的模型返回
}