php 特有,PHP单一入口的特有作用
在说单一入口之前,先说说多入口。Discuz!, PHPCMS 2008, DedeCMS 都是采用多入口的结构。
多入口,即通过访问不同的 php 文件运行对应的功能。如:
/index.php - 网站首页
/show.php?id=1 - 内容页
/list.php?page=2 - 列表页
/login.php - 用户登录页
……
多入口都是通过包含头文件统一运行环境,即初始化系统。如:
/include/common.inc.php - 头文件,PHP 文件 include 它后便完成了初始化工作,例如可以使用系统的基础函数。
php /index.php
include './include/common.inc.php' // 包含头文件,基本是每个入口 php 文件的首行代码。
……
?>
拿 PHPCMS 2008 的头文件来举例, PHPCMS 2008 在头文件中完成了基础函数的加载,常量的定义,系统配置的载入,POST,GET 数据的过滤,数据库类的实例化,保持用户登录等等等等一系列操作。
反正就是个 php 文件嘛,想做什么直接往里加就是了。
所以,所谓的安全检查,统一检查,权限控制等,用头文件同样可以实现,所谓“单一入口”只不过是换了一种形式,并无实质性的变化。
以前我就是这样认为的。
现在,假设用 CMS 为客户建一个站( CMS 是多入口的):建栏目,配网站,卡拉卡拉一段忙碌后,网站可以上线了,放在这个地址下:
localhost/gz/
没错,这次建的是 gz 这个地区的地区站,客户认为网站做得不错,希望做多一个 bj 地区的地区站。 bj 站的栏目结构,内容,功能模块等都与 gz 站有所不同。
好,现在问题来了,上面提到的三个多入口的系统,都设计成一套程序一个环境,即一套程序只对应一个数据库。对于上面的需求( bj 站),除非修改整套程序的结构(这是不切实际的),否则就只能复制多一份源代码,指向另一个数据库。
于是,我便复制多一份源代码,指向 bj 数据库( gz 站则指向 gz 数据库),建栏目,配网站,卡拉卡拉一优忙碌后,网站又可以上线了,放在这个地址下:
localhost/bj/
所以,现在有两套一样的程序在运行。
然后,客户想改一改 gz 站的功能,于是我修改了 gz 的代码。然后,客户想改一改 bj 站的功能,于是我修改了 bj 的代码。然后,客户想在 bj 站上做与 gz 同样的修改,于是我得把 gz 的修改复制到 bj 中,然后……
于是,我不得不维护两份实际上是“一样”的代码。
假如网站运营得不错,客户又建了若干个地区站,我维护的便是若干份“一样”的代码——这根本就是恶梦。
现在到单一入口登场了。
单一入口,就是访问同一个文件加不同参数运行不同的功能。如:
/index.php - 单一入口,默认显示首页
/index.php?action=show&id=1 - 用 action 参数指明显示内容页
/index.php?action=list&page=2 - 显示列表页
/index.php?action=login - 用户登录页
……
index.php 这个入口做的便是头文件做的初始化操作(外加一些调度),包括加载网站的配置。
现在我们来假设建站用的 CMS 是单一入口的设计,在完成 gz 站后,面对同样的需求( bj 站),我只需要在 /bj/ 目录入多建一个入口文件,加载指向 bj 数据库的配置,再配配数据卡拉卡拉什么的,就完事了!
于是,我只需要维护一份源代码。
这便是单一入口特有的作用——构造环境。
使用哪个数据库就是环境的一种,类似的还有:用内存缓存还是文件缓存,用 mysql 还是 mssql 等。
除非在设计阶段特别留意,否则,头文件的结构都会被写成“一套程序一个环境”的结构。而采用单一入口结构,无论是否留意,都可以轻易实现“一套程序多个环境”。这才是使用单一入口的真正理由。
php 特有,PHP单一入口的特有作用相关推荐
- 深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
为什么80%的码农都做不了架构师?>>> ##1. MVC MVC是一个设计模式,它强制性的使应用程序的 输入.处理和输出分开. 使用MVC应用程序被分成三个核心部件:模型(M ...
- php 单一入口 seo,网站结构分类(单一入口还是多入口)
一般来说,网站的首页和分类页面收录不会有什么问题,除非主导航系统有严重蜘蛛陷阱,或者网站已经被惩罚.大部分网站在结构方面面对的挑战,是使更多最终产品页面被收录.就算尽量吧网站结构扁平化,当产品数量巨大 ...
- apache php 单入口,apache配置php实现单一入口方法
apache配置php实现单一入口方法 发布时间:2019-10-08 10:37 来源:互联网 当前栏目:网站服务器 在apache的httpd.conf加入,需要把LoadModule rewri ...
- php编程实现单入口,apache配置php实现单一入口方法
apache配置php实现单一入口方法 发布于 2016-02-10 16:25:51 | 198 次阅读 | 评论: 0 | 来源: 网友投递 Apache Web服务器Apache是世界使用排名第 ...
- PHP 单一入口程序
什么是单一入口应用程序? 在解释什么是单一入口应用程序之前,我们先来看看传统的 web 应用程序. news.php 显示新闻列表 news_edit.php 显示新闻编辑页面 这两个页面不但分别实现 ...
- php文件的作用,php入口文件的作用-PHP问题
php入口文件的作用 php入口文件能够完成主动加载性能. 解析PHP入口文件的主动加载性能 php的主动加载: 正在php5之前,咱们要用某个类或类的办法,那必需include或许require,之 ...
- ThinkPHP学习笔记(二)入口文件的作用、URL控制、模板的简单使用方式
admin.php <?php ini_set("session.save_handler", "files"); //ThinkPHP核心框架文件路径 ...
- python入口函数的作用_python之函数中参数的作用域
学编程究竟学的是什么呢?在写文章的这几天也一直在思考这个问题--恐怕这也是接下来的几年一直会去思考的问题.这个问题的答案也会指导我的方法论,所以索性整顿一下. 现阶段我的回答是,发现需求,然后解决. ...
- MVC模式 单一入口
模型-视图-控制器(MVC)是一种设计框架(设计模式). Model - 模型:(数据和业务规则)对数据进行加工,数据相关的一些操作,是应用程序中用于处理应用程序数据逻辑的部分. View - 视图: ...
最新文章
- Mysql提示缺少表的别名报错_mysql对sql中别名引起的Column not found问题
- php中去空函数trim,PHP中trim()函数简单使用指南
- 【原创】vmware tools点了安装却安装不了的问题解决方法
- 安徽省2019年普通高校招生文史、理工类最低控制分数线一览表
- C++ string线程不安全
- laravel改代码没变化_推荐10个优质的Laravel扩展
- JIT的Profile神器JITWatch
- 英特尔推出全新至强处理器E5 v4产品家族
- shell 中去掉末尾换行符
- Java并行流 No thread-bound request found
- 使用ASP .NET (C#) 產生PDF檔的好幫手—iTextSharp library (上)
- mysql 删除 like_MySQL 定时删除数据
- 众说纷“云”,看生态驱动工业物联网落地
- 阿里 Nacos 惊爆安全漏洞,火速升级!
- kettle在linux定时任务_linux环境下kettle部署(JDK安装配置,kettle安装配置,资源库配置,定时执行job)...
- 怎么关闭计算机硬件加速,win7关闭硬件加速的方法,手把手抓图教你如何关闭硬件加速功能...
- 大华平台linux密码,大华指纹锁管理员密码忘了
- LaTeX打出罗马数字、希腊字母和大写空心粗体字母
- Win11的筛选键怎么关闭
- Python爬取某宝商品数据案例:100页的价格、购买人数等数据
热门文章
- Linux 文件区块连续吗,关于Linux文件系统的的简单理解和认识
- 陕理工高级语言程序设计实验 (C)答案,陕理工高级语言程序计实验 (C)模板.doc
- 什么原因导致芯片短路_华为为什么突然大量用起了联发科芯片,或是这三个产品策略原因...
- 数据结构杂谈(六)——队列
- PyRun_SimpleFile()崩溃问题
- 深入react技术栈(3):React组件
- Vue手动封装实现一个五星评价得效果
- [html] 请使用canvas画一个渐变的长方形
- [css] 用css怎么实现两端对齐?
- [css] 行内元素可以设置padding和margin吗?