THINKPHP 中跨控制器调用类,跨模型调用类
例如这段namespaceAdmin\Controller;useComponent\AdminController;classAuthControllerextends...
例如这段
namespace Admin\Controller;
use Component\AdminController;
class AuthController extends AdminController{
function creat(){
$auth = new \Model\AuthModel();
}
一般如果调用模型不是直接D或者M函数么,为什么这里跨类调用需要用普通的实例化方式
如果是跨控制前什么情况下要用这种方式呢
这是一个控制器文件里函数实例化模型的例子,就是看不懂啥时候用这种方式,啥时候用D函数 展开
namespace Admin\Controller;
use Component\AdminController;
class AuthController extends AdminController{
function creat(){
$auth = new \Model\AuthModel();
}
一般如果调用模型不是直接D或者M函数么,为什么这里跨类调用需要用普通的实例化方式
如果是跨控制前什么情况下要用这种方式呢
这是一个控制器文件里函数实例化模型的例子,就是看不懂啥时候用这种方式,啥时候用D函数 展开
展开全部
new Authmodel(); 是用你model目录下创建Authmodel, 它是继承 Model .
比如你在Authmodel文件中写一个function fun(){.....}函数;
$auth = new \Model\AuthModel();
$auth->fun();就可以直接调用
而M('Auth')相当于model. 只是传了'auth'表命 , 只能M('Auth')->where()->.....之类的操作
比如你在Authmodel文件中写一个function fun(){.....}函数;
$auth = new \Model\AuthModel();
$auth->fun();就可以直接调用
而M('Auth')相当于model. 只是传了'auth'表命 , 只能M('Auth')->where()->.....之类的操作
追问
我还是有点没懂,我的理解是D M函数都是框架里的函数,应该是可以在任何地方都直击使用的用来实例化库类的函数,但是为什么这里还要特意用NEW,我记者controller里的文件进行跨控制器调用是需要这种方式,因为当前命名空间找不到,但是DM既然上全局作用的函数,应该不需要new也可以把,如果想确定表命可以 D('表明')
追答
比如你要查询一个table 表; id = 5 ; type = 3; 的前10条是不是要这么查?
$where['id'] = 5 ;
$where[type] = 3;
M('table')->where($where)->limit(10)->select();
但是你有一个testmodel类,
你大部分查询都是根绝,ID和TYPE,这样查询
你就能把方法写在一个函数里
function getlist($id = null , $type =null , $limit = 5){
$where['id'] = $id ;
$where[type] = $type;
return $this->where($where)->limit(10)->select();
}
你就能直接 $m = new testmodel();
$m->getlist(5,3,10);
这只是简单的SQL查询列子,如果有一个复杂查询方式,而且你经常用掉,用model就节约很多代码和时间
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询