Jas*_*onS 5 php model-view-controller
PHP可用的大量框架现在使用MVC.甚至ASP.net也有自己的MVC模块.
我可以看到MVC的吸引力,我真的可以和我经常使用它.我能看到的唯一缺点是你必须启动整个系统来执行页面请求.根据您的任务,这可能有点浪费.
所以问题.在专业环境中,这是现在使用PHP的唯一方法,还是其他具有替代优势的设计方法?
Dmi*_*tri 13
我不喜欢任何人告诉我如何编写代码.如果我想使用MVC我会,如果我找到一个更好的方法来解决特定任务,我会使用它.当人们把MVC变成宗教时我不喜欢.我也认为许多php编码器误解了MVC概念,并认为他们正在使用MVC模式,而事实上大部分时间都没有使用100%纯MVC.事实是,编写一个100%MVC并用PHP编写的网站并不容易,也不是非常有效.
大多数人在MVC的"V"部分遇到最大困难."M"很容易.这是你的数据.如果您将数据存储在数据库中并拥有数据库访问类,那就是您的"M"部分,那么您对"M"很好
现在控制器:当用户点击你页面的任何链接时,你的php代码必须从"M"(数据库)获取数据,准备它,应用一些逻辑,如为登录用户添加个性化,添加"请登录"链接如果用户没有记录,等等.这是你的"C"部分.
大多数人都遇到的问题是将"V"视图与"C"(控制器)分开这不容易,也不是在php中编码最有效的方法.在许多情况下,控制器部件必须已经生成一些html,因此您模糊了控制器和视图之间的界限.
如果你想保持纯MVC,那么你必须确保你的控制器返回一个纯数据,然后View类获取一些模板,插入你的数据并返回HTML.这就是php的问题所在.在模板只是将纯数据作为输入并返回html时,没有简单有效的方法来进行模板化.如果有一种简单的方法,那么人们就没有理由继续提出另一个新的模板库.有这么多用于php的模板库的原因是因为总有程序员对任何现有的程序员不满意并继续尝试发明他们自己的,更好的.
在我看来,唯一纯粹的模板库是XSLT,它完全由php支持,它带有php,它有效,它功能强大,很棒的模板引擎,更好的是,它是一种标准的,独立于平台的语言.一旦学习了XSLT,就可以在Java等任何其他编程语言中使用它.但它确实有一个小问题.它要求输入为XML.当然,您也可以使用DOM库创建一个优秀的,100%有效的XML,这也是php的一部分.问题是它会很慢.您将完成两项工作:首先从您的数据数组创建XML,然后使用您的XSL模板将该XML转换为HTML.这就是为什么XSLT作为模板引擎的方法从未在php中起飞.
现在你离开了其他选项来解析模板,通常是基于正则表达式的方法.你看到当我们到达MVC的"V"部分时它总是变得复杂吗?
"M"很容易,"C"是某种类型的纯PHP代码,无论是OOP还是程序代码,都无关紧要.这是"观点",是一个棘手的问题.
所以我的建议是 - 不要过分担心坚持纯MVC.控制器可以在这里和那里吐出大量的html.