ThinkPHP的A方法,R方法,M方法,D方法区别

时间:2022-09-24 15:02:42

 

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

 1 <?php
2 namespace Admin\Controller;
3 use Think\Controller;
4
5 class GoodsController extends Controller{
6 public function showlist(){
7
8 //实例化控制器A方法
9 $test=A("Manager");
10 echo $test->test1();
11
12 echo "<br/>";
13
14 //也可以去跨模块调用
15 $test_m=A("Home/Goods");
16 echo $test_m->test();
17
18 echo "<br/>";
19 //R方法可以取执行对应模块下面的
20 R("Home/Goods/test");
21 // $this->display();
22 }
23 }

 

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

 

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

 1 <?php
2 namespace Admin\Controller;
3 use Think\Controller;
4 class TestController extends Controller{
5 public function test1(){
6 $mythinkphp=M("user");
7 $t=$mythinkphp->select();
8 echo "<pre>";
9 // var_dump($mythinkphp->select());
10 // echo count($t);
11 // echo "<br/>";
12 // echo count($t[1]);
13 // echo "<br/>";
14 // for($i=0; $i<count($t); $i++){
15 // if($t[$i]['name']=='xuning'){
16 // echo "存在这个用户,用户ID为".($i-1);
17 // }
18 // }
19 // echo "<br/>";
20 //这样就完成了从数据库里面去遍历数据
21 echo "<center>";
22 echo "<h1>This is table test content</h1>";
23 echo "<table border='1px'>";
24 for($i=0; $i< count($t); $i++){
25 echo "<tr>";
26 echo "<td>";
27 echo $t[$i]['id'];
28 echo "</td>";
29 echo "<td>";
30 echo $t[$i]['name'];
31 echo "</td>";
32 echo "<td>";
33 echo $t[$i]['password'];
34 echo "</td>";
35 echo "</tr>";
36 }
37 echo "</table>";
38 echo "</center>";
39 echo "</pre>";
40 $t2=D("test_1");
41 $temp=$t2->select();
42 echo $temp[0]['name'];
43 }
44 public function test2(){
45 //其实这里的实例化是建立的数据库对象,并不是精确到表,同时
46 //我们也可以不是建立数据模型,从而直接使用,所以,
47 $t=new \Model\TestModel;
48 show_bug($t);
49 }
50 public function test3(){
51 $user=D("Test");
52 show_bug($user);
53 }
54 }

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

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