ThinkPHP框架研究之一 基本函数 M和D的区别
来源:互联网 发布:dapaolu域名更换mp4 编辑:程序博客网 时间:2024/05/21 18:50
今天就从 基本函数 M和D开始
高手莫见笑..有不对的地方 望一起讨论
两个有共同点..都是实例化对象用的..
但是 在使用时 两者却不一样...为什么??
先看看代码
函数M
- 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方法
- function D($name = '', $app = '')
- {
- static $_model = array();
- if (empty($name))
- //$name为空 作用就等同 函数M();
- return new Model;
- if (empty($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';
- import($app . '.Model.' . $className);
- }
- //实例化对象返回
- if (class_exists($className))
- {
- $model = new $className();
- } else
- {
- $model = new Model($name);
- }
- $_model[$app . $OriClassName] = $model;
- return $model;
- }
具体注释已经在代码里面了
两者对比 大家应该能看出来...
D函数实例化的是 你当前项目的Lib/Model下面的模块
如果该模块不存在的话 直接返回实例化Model的对象(意义就与M()函数相同)
而M 只返回 实例化 Model的对象..它的$name参数 作为数据库的表名来处理对数据库的操作
转载自:http://blog.csdn.net/siren0203/article/details/5974415
0 0
- ThinkPHP框架研究之一 基本函数 M和D的区别
- ThinkPHP框架研究之一 基本函数 M和D的区别
- ThinkPHP框架研究之一 基本函数 M和D的区别
- ThinkPHP框架中快捷键M和D的区别
- ThinkPHP框架中快捷键M和D的区别
- ThinkPHP框架中快捷方法M和D的区别
- ThinkPHP M()函数和D()函数的区别
- ThinkPHP中D()和M()函数的区别
- thinkPHP的M()和D()的区别
- thinkphp M和D方法的区别
- ThinkPhp中M和D的区别
- ThinkPhp中M和D的区别
- thinkPHP中M()和D()的区别
- thinkPHP中M()和D()的区别
- TP框架D函数和M函数的区别
- Thinkphp框架,D 和 M 的 区 别
- thinkphp的M()和D()方法的区别
- thinkphp的M()和D()方法的区别
- C/C++学习 - 基本类型所占字节数
- 求算法执行时间的方法
- thinkphp整合kindeditor编辑器详解
- 第一课,读写文件
- 单向链表LinkedList的使用
- ThinkPHP框架研究之一 基本函数 M和D的区别
- ThinkPHP中M方法与D方法有什么区别
- 黑马程序员------学习笔记(6)集合
- 黑马程序员------学习笔记(7)多线程
- 辛星浅析邮件服务中的几个概念
- c# 加密算法集锦
- 黑马程序员------学习笔记(8)网络编程
- java 求二叉树的深度
- 请区别对待女程序员 .