问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

php中,什么是单一模式?优缺点

发布网友 发布时间:2022-12-11 15:44

我来回答

1个回答

热心网友 时间:2023-12-01 13:26

php单一入口模式可谓是现在一种比较流行的大型web应用开发模式,比如当前比较流行的一些php开发框架,zend,thinkphp,qeephp,还有cakephp
等他们都是采用的单一入口模式的。本文将就什么是单一入口模式,单一入口模式有哪些优点以缺点做一下研究。
什么是单一入口?
在解释什么是单一入口之前,先说说与之对应的多入口。多入口即通过访问不同的 php 文件运行对应的功能。比如刚开始学习 php
的时候,我们做一个项目通常都会如下这样做:
index.php - 网站首页
list.php?page=5 - 内容列表页
info.php?id=12 - 内容详细页
login.php - 用户登录页
对于这个项目来说,这其实就是一个多入口。
那么单一入口的应用程序就是说用一个文件处理所有的HTTP请求,例如不管是内容列表页,用户登录页还是内容详细页,都是通过从浏览器访问 index.php
文件来进行处理的,这里这个 index.php 文件就是这个应用程序的单一入口。
php 是如何实现单一入口的呢?
很简单,一般单一入口程序都是在访问index.php时附带一个特定的参数。例如:index.php?action=list 就可以定义为访问内容列表页,而
index.php?action=info 则可以定义为访问内容详细页等,具体实现代码如下:

//从url中取出action参数,如果没有提供action参数,就设置一个默认的'index'作为参数
$action=$_GET['action']==''?'index':$_GET['action'];
//根据$action参数调用不同的代码文件,从而满足单一入口实现对应的不同的功能
include('files/'.$action.'.php');

以上这个就实现了一个最简单的单一入口模式程序,当然真正的单一入口模式会比这个要复杂很多。但只要懂得如何合理组织各个功能的处理代码并遵循一定的步骤,也可以轻松的解决掉这个难题,下面就一个后台的例子来做一下说明:
比如我们现在要做一个新闻管理的后台。那么首先,对于应用程序的功能要做出一个合理的分解。例如后台的新闻栏目可能包含“添加新闻”、“编辑新闻”、“删除新闻”等多个功能。这时我们就可以将这一组逻辑上关联的功能组合到一个功能模块中,称为“新闻管理”模块。
按照上面的方法整理完应用程序的功能,我们就会得到多个功能模块,而每个模块又是由多个功能组成(实际上,即便不是单一入口应用程序,功能的整理也是必须的步骤)。
整理完功能后,我们就需要确定如何存放各个功能的代码。这里我推荐两种方式:
1、每个功能模块一个子目录,目录里的每一个文件就是一个功能的实现代码。

种方式的好处是每个功能的代码都互相隔离,非常便于多人协作。缺点是每个功能之间共享代码和数据不那么方便。例如新闻管理模块中的所有功能都需要一个“取
出新闻栏目记录”的功能,那么采用这种多个独立文件的组织方式,“取出新闻栏目记录”就只能写在另一个文件中,然后由需要该功能的文件include
进去。
2、每个模块一个文件,模块中的每个功能写成一个函数或者一个类方法。
好处不用多说了,非常便于共享代码和数据。缺点就是如果几个人同时改,容易发生冲突。不过借助版本控制软件和差异比较合并工具,冲突还是很容易解决的。
单一入口应用程序对应多入口有哪些优势呢?

一入口应用程序的所有http请求都是通过index.php接收并转发到功能代码中去的,所以在index.php里面就能完成许多实际工作(所有页面
都需要做的且都一样的工作)。比如进行集中的安全性检查,访问统计等等,如果不是单一入口,那么开发者就必须记得在每一个文件的开始加上安全性检查代码,
当然,你也许会说,多入口的安全性检查可以写到另一个文件中,然后include一下就可以了。但实际针对一个相对较大型一点的应用项目,在几十个文件中
保持头部的几个include都一致可不是一件让人省心的事。
与安全性检查类似。在入口里,我们还可以对url参数和post进行必要的检查和特殊字符过滤、记录日志、访问统计等等各种可以集中处理的任务。这样就可以看出,由于这些工作都被集中到了index.php来完成,可以减轻我们维护其他功能代码的难度。
单一入口应用程序的缺点?
任何事情都有两面性,单一入口应用程序也不例外。由于所有http请求都是访问 index.php ,所以程序的 url
看起来不那么美观,特别是对搜索引擎来说不太友好。比如下面这个 url:
http://www.phperhome.ocm/index.php?controller=posts&action=index
我们知道这种URl不太方便记忆,而且搜索引擎不认它是一个正常的 URL,当然是相比下面这种 URl 来说的:
http://www.phperhome.ocm/index.php/posts/index/
不过这个也不是什么大问题,可以采用url重写、PATHINFO等方式就可以轻松解决这个问题。
OK,单一入口模式就写这么多了,当然要想深刻理解单一模式,最好的办法还是自己尝试着用单一入口模式写一个小应用出来深刻体会一下。

本文地址:http://www.phperhome.com/php/400.html
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
说课包括哪些方面 说课内容包括()。 如何在手机百度上删除对话记录? 结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 脐疗减肥让我瘦了8公斤 输卵管通水要做几次 理财产品2.85%的利息是多少 智能表微信小程序停止服务 为什么小程序显示亲亲平台休息中 柠檬连皮一起榨汁好吗 柠檬连皮一起榨汁可以吗 梦见朋友妈妈死在自己家里什么意思 门前为什么不能两边都种棕榈树呢? ur衣服质量好吗 ur与zara有什么共同点和不同点 梦到石头是什么意思 梦到石头有什么寓意 放了半年的腊排骨还能吃吗 一直挂着的 没没味道 腊排骨有哈喇子味怎么处理 腊排骨放一年还能吃吗 腊排骨需要泡水吗 腊排骨泡水候还能放吗 手工冰棍硅胶模具需要冻多久 男孩子卖化妆品微信名字怎么写好听 电信无线宽带有电话号码吗? 手机版wps怎么在图片上打字且不遮挡背景 火腿肉松面包 火腿肉松面包做法 室友从来不洗脚味特别大,该怎么委婉的告诉他? 宿舍太吵怎么骂他们? 我的微信运动捐赠步数为什么一打开就是一块走怎么才能删除?_百度... 有什么圣诞题材的经典电影? 快过圣诞节了,有什么圣诞题材的电影吗 有哪些值得推荐的圣诞题材的电影 考研 苏大 软件工程 苏州大学研究生软件工程有专硕吗? 【考研】杭电,南邮和苏大考研 软件工程专业哪个更好 求苏州大学的学长学姐给解答下苏大软件工程专业硕士怎么样? 考研中南大学软件工程和苏州大学软件工程哪个更难考? 19考研苏大软件工程或计科,有考上的学长学姐吗 谁能帮我推荐下江苏省软件工程专业的学校,准备考研,最近在参考下院校... 京喜社抖音推广赚钱是真的吗 微信昵称简短个性女孩 关于女孩的个性昵称推荐 微信个性昵称大全简短女生 个性女生微信昵称推荐 女生微信昵称大全个性简短 个性简短的女生微信昵称推荐 word的小号就是初号吗? 新手如何开车上路才安全 单眼皮适不适合做美瞳线 家用电线规格有哪些 如何选购家用电线 迁安交通局路政执法队的人,你们的家属全被车压死。巨长徐国你早晚得癌症...