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函数
展开
 我来答
夜神梦无眠
推荐于2017-11-27 · TA获得超过3357个赞
知道小有建树答主
回答量:968
采纳率:63%
帮助的人:418万
展开全部
new Authmodel(); 是用你model目录下创建Authmodel, 它是继承 Model .
比如你在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就节约很多代码和时间
443508407
2015-06-03 · TA获得超过394个赞
知道小有建树答主
回答量:266
采纳率:66%
帮助的人:112万
展开全部
我感觉这里应该也可以用D或M方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式