Thinkphp3.2.2 D函数bug!新手提问

浏览:1475 发布日期:2014/06/20 分类:求助交流
这是原来函数
function D($name='',$layer='') {
if(empty($name)) return new Think\Model;
static $_model = array();
$layer = $layer? : C('DEFAULT_M_layer');
if(isset($_model[$name.$layer]))
return $_model[$name.$layer];
$class = parse_res_name($name,$layer);
if(class_exists($class)) {
$model = new $class(basename($name));
}elseif(false === strpos($name,'/')){
// 自动加载公共模块下面的模型
if(!C('APP_USE_NAMESPACE')){
import('Common/'.$layer.'/'.$class);
}else{
$class = '\\Common\\'.$layer.'\\'.$name.$layer;
}
$model = class_exists($class)? new $class($name) : new Think\Model($name);
}else {
Think\Log::record('D方法实例化没找到模型类'.$class,Think\Log::NOTICE);
$model = new Think\Model(basename($name));
}
$_model[$name.$layer] = $model;
return $model;
}

这是有问题的那段!
// 自动加载公共模块下面的模型
if(!C('APP_USE_NAMESPACE')){
import('Common/'.$layer.'/'.$class);
}else{
$class = '\\Common\\'.$layer.'\\'.$name.$layer;
}
存在逻辑错误! 当前模块假设是Home模块中不存在模型!就实力化Common模块下的模型! 实际例子中class_exsit($class)为false;
$class = '\\Common\\'.$layer.'\\'.$name.$layer; 是不是应该改成
$class = 'Common\\'.$layer.'\\'.$name.$layer;
我改成 $class = 'Common\\'.$layer.'\\'.$name.$layer; 这样就没有逻辑错误了!
望大神帮忙解释下!
最佳答案
评论() 相关
后面还有条评论,点击查看>>