ThinkPHP快捷方法M与D的区别
2013-10-10 16:53
411 查看
ThinkPHP快捷方法M与D的区别
两个有共同点都是实例化对象用的。
先看看代码
函数M:
view plaincopy to clipboardprint?
function M($name = '', $class = 'Model')
{
static$_model = array();
if(!isset($_model[$name . '_' . $class]))
// 默认也就是 new Model($name)
$_model[$name. '_' . $class] = new $class($name);
//返回实例化对象
return$_model[$name . '_' . $class];
}
function M($name = '', $class = 'Model')
{
static$_model = array();
if(!isset($_model[$name . '_' . $class]))
// 默认也就是 new Model($name)
$_model[$name. '_' . $class] = new $class($name);
//返回实例化对象
return$_model[$name . '_' . $class];
}
$_model[$name . '_' . $class] = new $class($name);
默认也就是 new Model($name)
也就是说 M返回的是Model的对象
如果$name不为空 那么$name的意义也就是代表数据库的表名(这个以后说)
通过直接实例化Model方法(ThinkPHP基类)来动态的实例化一个Model对象,即使这个对应的Model文件不存在。
再来看D方法:
view plaincopy to clipboardprint?
function D($name = '', $app = '')
{
static$_model = array();
if(emptyempty($name))
//$name为空作用就等同 函数M();
returnnew Model;
if(emptyempty($app))
//默认模块名称在Common/convention.php中定义 =@
$app= C('DEFAULT_APP');
//如果已经存在对象直接返回
if(isset($_model[$app . $name]))
return$_model[$app . $name];
$OriClassName= $name;
//如果$name参数是以@.**.模块名 这种参数传递的话
if(strpos($name, '.'))
{
$array= explode('.', $name);
//$name=模块名
$name= array_pop($array);
$className= $name . 'Model';
//导入Model模块所在的文件
import($app. '.Model.' . implode('.', $array) . '.' . $className);
}
//直接导入
else
{
$className= $name . 'Model';
两个有共同点都是实例化对象用的。
先看看代码
函数M:
view plaincopy to clipboardprint?
function M($name = '', $class = 'Model')
{
static$_model = array();
if(!isset($_model[$name . '_' . $class]))
// 默认也就是 new Model($name)
$_model[$name. '_' . $class] = new $class($name);
//返回实例化对象
return$_model[$name . '_' . $class];
}
function M($name = '', $class = 'Model')
{
static$_model = array();
if(!isset($_model[$name . '_' . $class]))
// 默认也就是 new Model($name)
$_model[$name. '_' . $class] = new $class($name);
//返回实例化对象
return$_model[$name . '_' . $class];
}
$_model[$name . '_' . $class] = new $class($name);
默认也就是 new Model($name)
也就是说 M返回的是Model的对象
如果$name不为空 那么$name的意义也就是代表数据库的表名(这个以后说)
通过直接实例化Model方法(ThinkPHP基类)来动态的实例化一个Model对象,即使这个对应的Model文件不存在。
再来看D方法:
view plaincopy to clipboardprint?
function D($name = '', $app = '')
{
static$_model = array();
if(emptyempty($name))
//$name为空作用就等同 函数M();
returnnew Model;
if(emptyempty($app))
//默认模块名称在Common/convention.php中定义 =@
$app= C('DEFAULT_APP');
//如果已经存在对象直接返回
if(isset($_model[$app . $name]))
return$_model[$app . $name];
$OriClassName= $name;
//如果$name参数是以@.**.模块名 这种参数传递的话
if(strpos($name, '.'))
{
$array= explode('.', $name);
//$name=模块名
$name= array_pop($array);
$className= $name . 'Model';
//导入Model模块所在的文件
import($app. '.Model.' . implode('.', $array) . '.' . $className);
}
//直接导入
else
{
$className= $name . 'Model';
相关文章推荐
- ThinkPHP框架中快捷方法M和D的区别
- ThinkPHP快捷方法M与D的区别
- thinkphp 中 query 和 execute 方法的区别(mysql)
- ThinkPHP单字母函数(快捷方法)使用总结
- ThinkPHP单字母函数(快捷方法)使用总结
- ThinkPHP 中M方法和D方法的具体区别
- ThinkPHP的F方法S方法使用和区别
- ThinkPHP单字母函数(快捷方法)使用总结
- thinkphp的M()和D()方法的区别
- ThinkPHP 中M方法和D方法的具体区别及其他方法介绍
- ThinkPHP单字母函数(快捷方法)使用总结
- 【ThinkPHP】thinkphp快捷方法总结
- ThinkPHP中execute和query方法的区别
- thinkphp的快捷方法实例化对象
- ThinkPHP常用单字母函数(快捷方法)使用总结
- ThinkPHP单字母函数(快捷方法)使用总结
- ThinkPHP单字母函数(快捷方法)使用总结
- thinkphp3.2.3中U()方法和redirect()方法区别
- Thinkphp框架中D方法与M方法的区别