Home > Article > Backend Development > 【PHP】MVC框架为什么这么难! 4年后终于明白了,被ThinkPHP害得
这个帖子送给那些被ThinkPHP命名搞得晕头转向的PHP程序员~(by default7#zbphp.com)
4年前我的几个帖子
帖子1 《 跟别人争论PHP中MVC的问题》 http://bbs.csdn.net/topics/350216861
发表于: 2010-12-10 22:38:53
其实这个帖子当时是使用ThinkPHP,但是运行极为缓慢,且网址怎么都对不上,最后放弃了使用MVC框架!
帖子2 《 貌似突然理解了MVC模型》 http://bbs.csdn.net/topics/390332774
发表于: 2012-12-29 16:47:22
这个帖子里面对MVC的理解其错误的,那种方法是工厂模式,并非MVC模式。
PHP MVC真心折磨人啊!!!~
MVC 是Model View Controller的缩写,是一种程序设计方式。可我虽然工作已经有五六年,一直做PHP程序员,但是始终没用过MVC框架更一直被MVC搞的晕头转向。国内MVC框架基本上都是ThinkPHP,很多次找工作,因为不会MVC,因为不用ThinkPHP框架,所以一直碰壁,越来越迷惑 怀疑 不解 抑郁。
这一次再次硬着头皮去理解掌握的心态,重新阅读ThinkPHP框架的官网资料,不过还是很遗憾,网址对应这里仍旧没看懂,越看越晕。不是说MVC吗, 为什么没有Controller类? 为什么会出现一个Action类?“ 控制器”怎么不见了,但是却有一个“Action”? 为什么有“网址参数a”和“参数m”? “参数a”是不是指代“Action类”?“参数m”是不是指代“Model类”??
ThinkPHP 为什么会这么难
<?php//文件地址:D:\zbphp.com\www\Lib\Action\MemberAction.class.phpclass MemberAction extends Action { public function index(){ $this->display(); } public function login(){ $this->display(); } public function register(){ $this->display(); }}
<?php//文件 D:\zbphp.com\www\Lib\Controller\MemberController.class.phpclass MemberController extends Controller { //访问地址 index.php?c=Member&a=index public function indexAction(){ $this->display(); } //访问地址 index.php?c=Member&a=login public function loginAction(){ $this->display(); } //访问地址 index.php?c=Member&a=register public function registerAction(){ $this->display(); }}
大神 怎么看待zf啊
称为 Action 而不是 Controller 是有道理的
Action 基类 完成了 Controller 的工作
而派生于 Action 的类完成的是 Model (业务模型)的工作
而 Model 类只是数据表的映射
其实认真看一下开发手册就都知道了,何苦要花4年时间?
愿楼主珍重
愿楼主珍重
称为 Action 而不是 Controller 是有道理的
Action 基类 完成了 Controller 的工作
而派生于 Action 的类完成的是 Model (业务模型)的工作
而 Model 类只是数据表的映射
其实认真看一下开发手册就都知道了,何苦要花4年时间?
有这么难理解吗?
?然菊花一?,但是我?是???主?於通?而感到欣慰。
???短不要?,重要的是你?於悟出?了
思想和框架是两个东西,思想要有,框架不一定要用。
一直觉得ThinkPHP是工厂模式。
主要还是因为,thinkphp是“借鉴”SSH,在SSH里面的MVC就是这样命名的。
主要还是因为,thinkphp是“借鉴”SSH,在SSH里面的MVC就是这样命名的。
你搞错了,thinkphp 2.x 也就是你说的什么action的,是最清晰的,代码也是最易懂得
现在的thinkphp 3.x,反而变得复杂不易懂了。
一直觉得ThinkPHP是工厂模式。
其实地址中的m是模块module a是方法action
模块和方法同时定位某个控制器方法,所以说module+action=controller 即地址中m+a=c
而MVC中的m是模型model ,不能用地址来调用,必须系统内部调用的...
你要怪得怪模块和模型的英文都是m开头产生了混淆...
这样说应该清楚明白了:
mvc = model + view + controller
controller = module + action
确实很多东西需要悟
这样子搞 。让我们新手怎么活呢?