在说单一入口之前,先说说多入口。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单一入口的特有作用相关推荐

  1. 深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念

    为什么80%的码农都做不了架构师?>>>    ##1. MVC MVC是一个设计模式,它强制性的使应用程序的 输入.处理和输出分开. 使用MVC应用程序被分成三个核心部件:模型(M ...

  2. php 单一入口 seo,网站结构分类(单一入口还是多入口)

    一般来说,网站的首页和分类页面收录不会有什么问题,除非主导航系统有严重蜘蛛陷阱,或者网站已经被惩罚.大部分网站在结构方面面对的挑战,是使更多最终产品页面被收录.就算尽量吧网站结构扁平化,当产品数量巨大 ...

  3. apache php 单入口,apache配置php实现单一入口方法

    apache配置php实现单一入口方法 发布时间:2019-10-08 10:37 来源:互联网 当前栏目:网站服务器 在apache的httpd.conf加入,需要把LoadModule rewri ...

  4. php编程实现单入口,apache配置php实现单一入口方法

    apache配置php实现单一入口方法 发布于 2016-02-10 16:25:51 | 198 次阅读 | 评论: 0 | 来源: 网友投递 Apache Web服务器Apache是世界使用排名第 ...

  5. PHP 单一入口程序

    什么是单一入口应用程序? 在解释什么是单一入口应用程序之前,我们先来看看传统的 web 应用程序. news.php 显示新闻列表 news_edit.php 显示新闻编辑页面 这两个页面不但分别实现 ...

  6. php文件的作用,php入口文件的作用-PHP问题

    php入口文件的作用 php入口文件能够完成主动加载性能. 解析PHP入口文件的主动加载性能 php的主动加载: 正在php5之前,咱们要用某个类或类的办法,那必需include或许require,之 ...

  7. ThinkPHP学习笔记(二)入口文件的作用、URL控制、模板的简单使用方式

    admin.php <?php ini_set("session.save_handler", "files"); //ThinkPHP核心框架文件路径 ...

  8. python入口函数的作用_python之函数中参数的作用域

    学编程究竟学的是什么呢?在写文章的这几天也一直在思考这个问题--恐怕这也是接下来的几年一直会去思考的问题.这个问题的答案也会指导我的方法论,所以索性整顿一下. 现阶段我的回答是,发现需求,然后解决. ...

  9. MVC模式 单一入口

    模型-视图-控制器(MVC)是一种设计框架(设计模式). Model - 模型:(数据和业务规则)对数据进行加工,数据相关的一些操作,是应用程序中用于处理应用程序数据逻辑的部分. View - 视图: ...

最新文章

  1. Mysql提示缺少表的别名报错_mysql对sql中别名引起的Column not found问题
  2. php中去空函数trim,PHP中trim()函数简单使用指南
  3. 【原创】vmware tools点了安装却安装不了的问题解决方法
  4. 安徽省2019年普通高校招生文史、理工类最低控制分数线一览表
  5. C++ string线程不安全
  6. laravel改代码没变化_推荐10个优质的Laravel扩展
  7. JIT的Profile神器JITWatch
  8. 英特尔推出全新至强处理器E5 v4产品家族
  9. shell 中去掉末尾换行符
  10. Java并行流 No thread-bound request found
  11. 使用ASP .NET (C#) 產生PDF檔的好幫手—iTextSharp library (上)
  12. mysql 删除 like_MySQL 定时删除数据
  13. 众说纷“云”,看生态驱动工业物联网落地
  14. 阿里 Nacos 惊爆安全漏洞,火速升级!
  15. kettle在linux定时任务_linux环境下kettle部署(JDK安装配置,kettle安装配置,资源库配置,定时执行job)...
  16. 怎么关闭计算机硬件加速,win7关闭硬件加速的方法,手把手抓图教你如何关闭硬件加速功能...
  17. 大华平台linux密码,大华指纹锁管理员密码忘了
  18. LaTeX打出罗马数字、希腊字母和大写空心粗体字母
  19. Win11的筛选键怎么关闭
  20. Python爬取某宝商品数据案例:100页的价格、购买人数等数据

热门文章

  1. Linux 文件区块连续吗,关于Linux文件系统的的简单理解和认识
  2. 陕理工高级语言程序设计实验 (C)答案,陕理工高级语言程序计实验 (C)模板.doc
  3. 什么原因导致芯片短路_华为为什么突然大量用起了联发科芯片,或是这三个产品策略原因...
  4. 数据结构杂谈(六)——队列
  5. PyRun_SimpleFile()崩溃问题
  6. 深入react技术栈(3):React组件
  7. Vue手动封装实现一个五星评价得效果
  8. [html] 请使用canvas画一个渐变的长方形
  9. [css] 用css怎么实现两端对齐?
  10. [css] 行内元素可以设置padding和margin吗?