首页 / PHP / PHP中的多层……正确的方法?
PHP中的多层……正确的方法?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP中的多层……正确的方法?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2769字,纯文字阅读大概需要4分钟。
内容图文
![PHP中的多层……正确的方法?](/upload/InfoBanner/zyjiaocheng/812/ae410c76529b42a6b231289d5fd6e8a8.jpg)
我有一个特定的问题,可以使用一般答案……在PHP中构建多层应用程序时,一切都必须在业务逻辑层中完成,或者任何层都可以工作……例如,让我说我在构建层上构建一个显示用户信息(来自数据库)的应用程序.我应该使用业务层简单地将数据传递到表示层,还是直接从表示层中的数据库中获取信息.如果表示层用于呈现数据,那么访问层使用JUST来获取数据,所有工作都在业务层完成?
另外,谈到不同的层,最好是在程序上做事,或者使用OOP(比如使用includes来显示模板,使用类来包含模板,在程序上验证数据与使用类,或者使用函数和类来获取来自数据库的数据等)
正如您所看到的,我正在努力了解事情是如何运作的,以及最好的做事方式.话虽这么说,如果你有任何建议,或任何关于这个问题的一般性提示……请留下他们..
谢谢
解决方法:
Web应用程序和N层很有意思,主要是因为随着JSON和AJAX,或Flash和XMLRPC的广泛采用,N层的概念已经扩展.这个chart on Webopedia显示了交错的蓝线,表达了这一点.总结一下:您的业务,访问者和表示逻辑不仅可以存在于服务器上 – 而且在某些情况下,可以存在于浏览器中.然而,N层的意图是可分离性.如果您需要更改UI或数据库,或添加其他UI,则不应影响业务逻辑.这就是决定你的API的原因 – 预测你的HTML和CSS被弃用的那一天,并且MySQL已经被更换为Oracle.
这是需求确定的,在我使用的一些Web应用程序中,同时使用N层的变体.以LyrisHQ(电子邮件ASP)为例.他们有一个客户Web应用程序.最近,他们盯着推动基于Flash的应用程序.这显然会将大量数据传递给浏览器,并且Flash UI中可能存在一些重复的业务逻辑.但是,他们必须维护这两个应用程序,因为任何一个都是不同(和重叠)要求所必需的.
最常见的PHP应用程序不考虑将大量未格式化的数据传送到浏览器.但如果你这样做,这将很快告诉你如何设计你的API.很可能,除了PHP演示模板使用的类似内部控制器类之外,您还需要能够与XMLRPC,REST或SOAP …进行对话的控制器.这将严格意味着一个简单的Web登录页面,您将拥有一个与LoginController类对话的登录表单的PHP模板. XML接口同样使用相同的LoginController类.就像你会假设你将SQL写入Ajax请求一样疯狂……你将严格避免在你的演示模板中编写查询.
业务层可以或多或少地严格,因为通常不需要切换数据库后端的品牌.在严格的N层设计中,业务对象如何与数据库通信就好像您可以从MySQL切换到MS SQL而无需重写业务层.有时,这是通过为每个表(表网关),每行(活动记录),每个联接或每个事务建模对象来完成的.这是像PDO或PHP-ADO这样的东西很有用,但不足以完全隔离.像Hibernate这样的Java中的ORM / Persistence层通常通过提供对象查询语言(OQL)来更好地证明这种隔离.
我自己,我目前正在进行从基于MySQL的PHP??应用程序到MS-SQL应用程序的后端转换.该应用程序只使用过直接SQL查询.想象一下,选择如何在类中进行一系列查询,并抽象它们或子类化,并希望不改变业务逻辑.至少,您需要间接地进行所有SQL调用. (S.O. post on PHP ORM.)
最后,关于OOP的问题:使用它如何满足您的要求.我的个人技术是在PHP演示模板中开始使用逻辑几分钟来推动滚动,很快我就会将它重构成一个类和一个模板.如果我有共同的想法,我会将例程分解为共享类,努力保持DNRY原则. (A S.O. post on that here. OOP不是N层设计的基本要求.DNRY对于保持代码可维护性非常重要.通常截止日期和范围转移会破坏API.重构它直到得到你需要继续前进的东西.I打赌OOP将帮助你到达那里.
内容总结
以上是互联网集市为您收集整理的PHP中的多层……正确的方法?全部内容,希望文章能够帮你解决PHP中的多层……正确的方法?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。