PHP框架开发第一步——工厂模式

几乎所有的PHP框架都使用单入口文件方式,也就是说所有的请求都是从index.php进入。那就必须要用到工厂模式来实现请求的分发。

例如,我们在请求这样的URL :

http://www.test.com/index.php?c=User&a=index

含义是我们需要请求User控制器的index方法。也就是说index.php需要根据参数去创建User控制器的实例,并调用index方法。它好像就是实现了一个“工厂”的功能。

我们可以这样实现一个工厂类:

class Factory{

	public static function getInstance($controller_name,$action_name){

		if(class_exists($controller_name)){

			$controller = new $controller_name;

			if(method_exists($controller,$action_name)){

				$controller->$action_name();
			}else{

				exit(‘action not found‘);
			}
		}else{

			exit(‘controller not found‘);
		}
	}

}

有了这个工厂类,我们在index.php中只需要编写下面的代码,就可以完成全部的逻辑了:

$controller_name = $_GET[‘c‘];
$action_name = $_GET[‘a‘];

Factory::getInstance($controller_name,$action_name);

分析一下上面的代码,首先接收到控制器名称和方法名称,传递给工厂类Factory的getInstance方法。Factory会自动帮我们实例化控制器,并调用相应的方法。

这就是工厂类,给他一定的参数,它能帮你做剩下的工作。

再来看看工厂类是怎么实现的。它首先会检查控制器类是否存在:

class_exists($controller_name);

如果类不存在,会提示:controller not found.

然后会创建控制器的实例,再检查方法是否存在并执行。

method_exists($controller,$action_name);

这就是工厂类的实现原理,当然还可以继续完善它。

在更多的情况下,我们会把控制器放在独立的文件中,这时候工厂类需要先引入控制器文件:

require(‘app/controller/‘.$controller_name.‘.php‘);
时间: 2024-08-29 00:57:15

PHP框架开发第一步——工厂模式的相关文章

windows phone开发第一步:搭建软件开发环境

windows phone开发第一步:搭建软件开发环境:http://www.cnblogs.com/hanjun/archive/2012/10/09/2716669.html

JAVA开发第一步 - JDK安装与配置

JDK的安装与环境变量配置是JAVA开发之路的第一步,很多新人在这一步上就卡了很久,浪费了很多时间,甚至有些人就轻易地“从入门到放弃”了.今天我们就来一步步教你如何打倒这第一只拦路虎. 1.JDK下载 百度搜索jdk关键字,找到第一个英文的链接:     点进去后找到 JAVA SE 8u211,点击JDK下面的DOWNLOAD标志进入下一页. 注意这里,有很多人直接下载了最新版本的JAVA 12,实际上JAVA 12开始是收费的了,而且里面的绝大多数特性都是新手用不到的,JAVA 8已经完全够

python开发第一步

Python开发[第二篇]:初识Python Mr.Seven 博客园 首页 新随笔 联系 订阅 管理 随笔-127  文章-146  评论-393 Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOBE排行榜,Python赶超PHP占据第五!!! 由上图可见,Python整体呈上升趋势,反映出Pyt

扫盲贴001---django框架的第一步

1.在已经安装了python3的基础下,使用pip下载django框架,在cmd中输入"pip install django",下载成功之后如下图所示 2.下载之后相关的django文件,如下图所示,分别在"C:\Python35\Scripts","C:\Python35\Lib\site-packages"两个路径中可以找到     3.在所要创建web工程的路径下输入"django-admin.py startproject bl

(C/C++)基于SharpUI控件库的插件式框架开发--第一篇简介

看到题目,很明显这里要说的是插件式框架的开发,当然是用c/c++来实现的.开发对于我来说,是一种爱好,但并非科班出身,所以这里要说的一点分享就是,开发并不是会写代码就行了,最主要的是要有思路想法,比如要实现一个功能,就要知道,这个功能到底是要来实现啥的,要实现它需要什么样的算法等等,做到胸中有丘壑,再去用最简单代码去实现它,就会发现写代码是一件很享受的事情. 参加工作快两年了,一开始的是用C#开发,写了半年多的功能和小控件,上手之后,参考ICSharpCode.Core.Presentation

[原]Android 开发第一步

使用 android-studio 开发 写文章时的最新 Android-Studio 程序下载:https://dl.google.com/dl/android/studio/ide-zips/3.0.0.5/android-studio-ide-171.4163606-windows.zip 更多版本可参考:http://www.androiddevtools.cn/ 可使用 Genymotion 虚拟机,要在国外网站上下载并注册帐号后才能使用. 也可以使用 Android-Studio 自

win 10 开发 第一步:开发环境的搭建

win 10 是一个全新的平台,也标志着微软的大一统.随着win 10 ,vs2015的发布,通用应用将进入我们的生活.对于想学习win 10 开发的同学来说,这是一个机会,win10 是全新的开始,让我们进入开发的第一课:win 10 应用开发环境的搭建. 一.准备工作. 1.要进行win10 开发,首先要将自己的电脑系统升级为win10.是的,首年升级免费! 2.如果要进行模拟器的使用,自己的电脑cpu还必须支持hyper-v虚拟化技术.我们可以在自己的电脑当中,打开——控制面板——启动或关

微博开发第一步

1.首先是必须在微博开发平台注册  http://open.weibo.com/wiki/首页 因为主要想抓取微博的信息,注册类型:我选的是简单的微连接的我网页应用.然后进行填写信息,必须要有身份认证一步,审核通过 2.关于回调网址, 转自:http://blog.163.com/[email protected]/blog/static/1032422412012814203809/ 下载下sina的API后,感觉说明的还是不够明白……尤其是那个回调地址,蛋疼的要死啊.. 首先,下载JDK,j

微信后台开发第一步:nodeJS+express接入微信后台详细教程

博文由  水车  编写 欢迎各位指正,转载请把链接带上! 前期准备工作 1:如果你没有服务器,那你需要一个内网映射工具:我用的是<花生壳>,花生壳在实名认证是需要8RMB的认证费,之后就可以永久使用了,并且支持80端口映射, 注:花生壳在免费申请时要申请内网,不要申请公网. 2:nodeJS 最新版本,安装教程自行上网搜索 3:一个注册号的微信公众号,自行申请,这里不做说明,网上教程已经比较成熟: 花生壳使用教程: 下载地址: http://hsk.oray.com/download/ 安装: