- 29
- 0
1,简单介绍一下,我现在理解的。我们现在做项目,比如商场。我们虽然是采用的MVC模式进行开发,但感觉其中让我有些迷茫的是,感觉像不是MVC。而且,我们公司的同事,都是这样开发的,让我觉得,我们好闭关锁国。所以想请教一下,各位PHP们的看法。
:接下来,我就用代码来描述一下。
//user.php[controller] -- 用户控制器
class user {
//获取用户信息[接口,或者是控制器入口]
public function getUserInfo(){
$mUser = new UserModel();
$tUser = $mUser->getInfo($this-userId);
echo json_encode($tUser);//输出信息
}
//复杂一点的控制器 举例用下单。
public function order(){
$product = I('product_id');//产品id
$address = I('address_id');//收获地址id
$coupon = I('cuopon');//红包id
$bouns = I('bouns');//代金卷id
#检查produt是否存在
//code .....
#检查红包是否合理
//code .....
#检查代金卷是否合理
//code .....
#检查地址是否合理
//code .....
#获取运费
//code .....
#操作订单数据
//code .....
#保存订单到数据库
//code .....
echo '成功';
//最后,我想表达的是,如果业务逻辑较多,我们的操作是,
//会把这一系列的业务逻辑都放在控制器里面。这种有问题没???,我总觉得,这样做很复杂。
}
}
模型:
//user 模型 [tp为例]
class UserModel{
public function getInfo($userId){
//我们的理解是,将与数据库模型操作的,封装起来。
$tA = M('user')->where(array('user_id'=>$userId))->find();
//下面,还可以进行一些数据的操作
return $tA;
}
//复杂一点的模型
public function getOrderInfo($id = '', $code = '',$userId = ''){
//这方法的总点是,我们再开发中,总是会先像第一个方法一样,
//写的时候很简洁,看起来就是单一职责,
//写到后面,你发现那个方法,其实可以加个参数,就可以重用了。
//然后到最后,你就晕了。这个方法,到底用来干嘛的,
//问:这种一个方法的设计原则,应该是单一职责吧,如果需要重用这种方式是否合理,
//应该怎么来设计比较好?
}
}
//最后用一些方式来标识设计的架构
C - controller
M - model
例如一个操作
请求接口 -> C -> 调用M的方法1
-> 调用M的方法2
-> 调用M的方法3
-> 调用M的方法4
-> 调用M的方法5
-> 调用M的方法6
->输出结果
//这是公司同事的架构,他们总觉得,我的模型,只要封装好方法就行了。然后控制器,可以一直这样处理业务逻辑
//我的问题是,这种看起来是没有错,但阅读起来,难度相当大,因为每个方法之间,依赖有点多(指M的方法1...6)
//如果你增加,或者减少一个M方法,那你就要阅读整个业务逻辑代码,好复杂。
//最后,
//我的理想业务逻辑是
C -> M方法1 -> M1方法1->M2方法1
-> M2方法1 ->M1方法1->M2方法3
//我想的是,能不能做到,一个业务逻辑,看起来每一块都是单一职责,都有一个入口,和一个出口,
不知道我表达清楚没,哈哈哈。
总结一些吧。我想学习一下大家开发项目的架构设计,关于MVC模式的架构。请大家和我一起分享一下。好吗?
- 共 0 条
- 全部回答
-
回忆像牢笼 普通会员 1楼
当然可以,我很乐意帮助你。PHP项目架构可以分为以下几个部分:
-
控制器:控制器是程序的最小单位,负责处理HTTP请求和响应。PHP控制器通过HTTP请求接收来自客户端的请求,然后根据请求的类型和参数,执行相应的操作。
-
模型:模型是数据库中的数据,它定义了如何处理和操作数据。PHP模型可以使用各种数据库操作,如查询、插入、更新和删除数据。
-
视图:视图是用户看到的数据。PHP视图负责生成HTML页面,将数据呈现给用户。
-
配置:配置是用于配置应用程序的参数。PHP配置文件用于设置应用程序的运行环境,如主机名、端口号、数据库连接信息等。
-
服务层:服务层是应用程序的后端部分,负责处理用户请求,生成响应。PHP服务层可以使用各种框架,如Laravel、Symfony等。
-
数据库连接:数据库连接是应用程序与数据库交互的桥梁。PHP可以通过mysqli、PDO、PDO_MySQL等库来连接数据库。
-
文件和目录管理:文件和目录管理用于管理应用程序的文件和目录结构。PHP可以通过mkdir、rmdir、copy、rename等函数来创建、删除和重命名文件和目录。
-
错误处理:错误处理是应用程序中防止错误发生的重要部分。PHP可以通过try-catch语句来处理错误。
希望这些信息对你有所帮助。如果你有具体的问题,欢迎继续提问。
-
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
