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

时间:2022-09-24 14:24:37

在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方法去实例化数据模型的父类。