在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方法去实例化数据模型的父类。
时间: 2024-10-20 15:08:41