在Thinkphp中,实例化对象有这么几种方法,如果是类,有A和R方法,区别是A方法只是对象的实例化,而R方法是可以同时实例化对象里面的方法的,这里需要去指定,如下面的实例代码:

 <?php
namespace Admin\Controller;
use Think\Controller; class GoodsController extends Controller{
public function showlist(){ //实例化控制器A方法
$test=A("Manager");
echo $test->test1(); echo "<br/>"; //也可以去跨模块调用
$test_m=A("Home/Goods");
echo $test_m->test(); echo "<br/>";
//R方法可以取执行对应模块下面的
R("Home/Goods/test");
// $this->display();
}
}

从上面可以看出,R方法同时也可以去跨模块去实例化。

另外我们在Model的数据模型里面,必然需要下面的两种方法,一个是D方法,一个是M方法,前者是实例化数据模型类,而后者则是实例化数据模型的父类。

 <?php
namespace Admin\Controller;
use Think\Controller;
class TestController extends Controller{
public function test1(){
$mythinkphp=M("user");
$t=$mythinkphp->select();
echo "<pre>";
// var_dump($mythinkphp->select());
// echo count($t);
// echo "<br/>";
// echo count($t[1]);
// echo "<br/>";
// for($i=0; $i<count($t); $i++){
// if($t[$i]['name']=='xuning'){
// echo "存在这个用户,用户ID为".($i-1);
// }
// }
// echo "<br/>";
//这样就完成了从数据库里面去遍历数据
echo "<center>";
echo "<h1>This is table test content</h1>";
echo "<table border='1px'>";
for($i=0; $i< count($t); $i++){
echo "<tr>";
echo "<td>";
echo $t[$i]['id'];
echo "</td>";
echo "<td>";
echo $t[$i]['name'];
echo "</td>";
echo "<td>";
echo $t[$i]['password'];
echo "</td>";
echo "</tr>";
}
echo "</table>";
echo "</center>";
echo "</pre>";
$t2=D("test_1");
$temp=$t2->select();
echo $temp[0]['name'];
}
public function test2(){
//其实这里的实例化是建立的数据库对象,并不是精确到表,同时
//我们也可以不是建立数据模型,从而直接使用,所以,
$t=new \Model\TestModel;
show_bug($t);
}
public function test3(){
$user=D("Test");
show_bug($user);
}
}

虽然从用法上看不出什么差别,但是内部确实不同的,D方法只实例化定义的数据模型类,而M方法去实例化数据模型的父类。

参考http://blog.csdn.net/mycodedream/article/details/45340949

ThinkPHP的A方法,R方法,M方法,D方法区别的更多相关文章

  1. thinkphp 定位查询 Model:last您所请求的方法不存在!

    thinkphp 定位查询 Model:last您所请求的方法不存在!   用thinkphp3.1做项目的时候为了获取记录表中最后一个id用到了last()方法,出现了这个错误:Model:last ...

  2. 该如何关闭thinkphp的缓存呢?有下面几种方法可参考:

    该如何关闭thinkphp的缓存呢?有下面几种方法可参考: (1)在配置文件中关闭缓存 在你的配置文件config.php文件中加上如下两句:   复制代码代码如下: 'TMPL_CACHE_ON'  ...

  3. thinkphp链接多个数据库时怎么调用M方法?

    老项目tp3.1.3,有N个数据库,thinkphp好久没用了,不知道怎么用M方法了,代码测验成功! 数据库名称: 2.直接上代码 $custom = M('base','branch_','shop ...

  4. R语言-连接MySQL数据库方法

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   R语言连接数据库常用的方法有2种: 1.使用R数据库接口 连接MySQL,使用RMySQL包,使用前RMySQL包要先安 ...

  5. 安装R语言的包的方法

    安装R语言的包的方法: 1. 在线安装 在R的控制台,输入类似install.packages("TSA")  # 安装 TSA install.packages("TS ...

  6. EXCEL 导入 R 的几种方法 R—readr和readxl包

    导入Excel数据至R语言的几种方法 如有如下Excel数据源,如何将数据导入R语言呢?今天主要来介绍几种常见的方法: 一.使用剪贴板,然后使用read.table函数: 首先选择Excel中的数据源 ...

  7. thinkphp中cookie和session中操作数组的方法

    thinkphp中cookie和session中操作数组的方法 一.ThinkPHP模板中如何操作session,以及如果session中保存的是数组的情况 在ThinkPHP的模板中操作sessio ...

  8. Lambda语言篇 —— lambda, 方法引用, 目标类型和默认方法

    本文介绍了Java SE 8中新引入的lambda语言特性以及这些特性背后的设计思想.这些特性包括: lambda表达式(又被成为"闭包"或"匿名方法") 方法 ...

  9. 使用DateTime的ParseExact方法实现特殊日期时间的方法详解(转)

    本篇文章是对使用DateTime的ParseExact方法实现特殊日期时间的方法进行了详细的分析介绍,需要的朋友参考下 今天遇到一个特别的需求,需要从下面的字符串中转换成一个DateTime对象: [ ...

随机推荐

  1. 在IIS上部署基于django WEB框架的python网站应用

    django是一款基于python语言的WEB开源框架,本文给出了如何将基于django写的python网站部署到window的IIS上. 笔者的运行环境: Window xp sp3 IIS 5.1 ...

  2. SEEprog Serial EEPROM programmer

    Features SEEprog is universal programmer of all types of serial EEPROMs in 8-pin package. SEEprog en ...

  3. Windows+VS2012环境下编译调试MySQL源码 转

    http://m.blog.csdn.net/blog/SnowyWolf/18952643

  4. hdu2158

    最短区间版大家来找碴 Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. 在EntityFramework6中管理DbContext的正确方式——1考虑的关键点(外文翻译)

    (译者注:使用EF开发应用程序的一个难点就在于对其DbContext的生命周期管理,你的管理策略是否能很好的支持上层服务 使用独立事务,使用嵌套事务,并行执行,异步执行等需求? Mehdi El Gu ...

  6. 正则表达式校验15/18位生份证-JAVA版

    public static boolean isIDNumber(String iDNumber) { if (iDNumber == null || "".equals(iDNu ...

  7. Selenium2+python自动化55-unittest之装饰器(@classmethod)

    前言 前面讲到unittest里面setUp可以在每次执行用例前执行,这样有效的减少了代码量,但是有个弊端,比如打开浏览器操作,每次执行用例时候都会重新打开,这样就会浪费很多时间. 于是就想是不是可以 ...

  8. icanhazip.com 使你在不论什么地方知道你的公网IP地址

    icanhazip.com 使你在不论什么地方知道你的公网IP地址 icanhazip.com是一个网址,你在浏览器中输入这个网址,你就能得到你的公网IP地址了. 我在Linux下一般使用curl i ...

  9. Spring加载Hibernate 映射的几种方式及区别

    LocalSessionFactoryBean有好几个属性用来查找hibernate映射文件: mappingResources.mappingLocations.mappingDirectoryLo ...

  10. Git 学习(三)本地仓库操作——git add & commit

    Git 学习(三)本地仓库操作——git add & commit Git 和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念.这在上文已有提及,本文具体说明什么是工作区及暂存区,以及 ...