php - 关于MVC框架中 模块传参的问题
本文介绍了php - 关于MVC框架中 模块传参的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
1.最近在开发的过程中注意到这样一个现象,通常对数据的CURD操作都会放到模块里面,在控制器调用并传入相应的参数即可!而这种通过形参传递参数的方式我个人是比较反感的!我在想我们能不能在模块里面接收参数在处理呢?这样模块在其他地方就可以随便调用了?而这个模块需要哪些参数自己去了解这个模块就可以了!
大多数人的写法
//模块
public function login($userName,$passWord,$validCode) {
$param['userName'] = $userName;
$param['passWord'] = $passWord;
$param['validCode'] = $validCode;
return $param;
}
//控制器
public function test(){
$userName = $_POST['userName'];
$passWord= $_POST['passWord'];
$validCode= $_POST['validCode'];
$this->login($userName,$passWord,$validCode));
}
我的写法
//模块
public function login() {
$param['userName'] = $_POST('userName');
$param['passWord'] = $_POST('passWord');
$param['validCode'] = $_POST('validCode');
return $param;
}
//控制器
public function test(){
$this->login();
}
可是现在大多数人都是用的第一种写法!我的写法我承认在命令行运行的时候可能会有问题!但我觉得为了代码的简洁我会选择封装一个函数来让我的写法适应各种场景
解决方案
你这样写有一个很明显的问题:
如果你的模块的方法要复用
,又不是用的普通的请求方式,例如我想添加一个订单,调用方法是模块的addOrder
,但是后这时候我通过其他方式添加,例如excel文件上传
,这时候调用模块的addOrder
方法,按照你的模块方法是没法添加的,因为这些订单信息是上传时候解析时候生成的,并不是放在$_POST
里面的。
这篇关于php - 关于MVC框架中 模块传参的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文