相信大家都接触过php框架吧,lavale,yii,thinkphp,简单来书这些都是企业模式。
这些模板虽然各不相同,各具优势,但是归根结底都是一样的,框架直接拿来使用很痛快,但是如果能够深入挖掘这些框架,会有更深入的理解,针对不同的业务可以有自己的框架。
注册表(全局配置信息-数据库,用户请求信息)-》用户请求数据分析-》找到执行文件执行用户请求-》返回页面(或者数据)
单例模式建立注册表,这部分在“单例模式中”有介绍,把数据库配置和用户请求做成全局变量,便于传输
用户请求信息分析:对用户信息指令进行分析,找到执行文件执行
返回页面,或者结果:如果需要页面直接include一个页面,如果需要结果,返回一个json
全是文字,没有代码是吧。之前写过
下面是一个注册表:
``<?php
namespace woo\base;
class ApplicationRegistry extends Registry{
private static $instance;
private $freezedir ='data';
private $values = array();
private $mtimes = array();
private function instance(){
if(!isset(self::$instance)){
self::$instance = new self();
}
return self::$instance;
}
protected function get($key){
$path = $this->freezedir.DIRECTORY_SEPARATOR.$key;
if(file_exists($path)){
clearstatcache();
$mtime = filemtime($path);
if(! isset($this->mtimes[$key])){
$this->mtimes[$key]=0;
}
if($mtime > $this->mtimes[$key]){
$data = file_get_contents($path);
return $this->values[$key] = unserialize($data);
}
}
if(isset($this->values[$key])){
return $this->values[$key];
}
return null;
}
protected function set($key, $val){
$this->values[$key] = $val;
$path = $this->freezedir.DIRECTORY_SEPARATOR.$key;
file_put_contents($path, serialize($val));
$this->mtimes[$key] = time();
}
static function getDSN(){
return self::$instance->get('dsn');
}
}``
指令分析
class CommandResolver{
function getCommand( $request)
{ //这块大家发挥的空间很大,可以随意哦
}
function execute()
{
include("cmdfile");
}
怎么组合?,告诉你,一个run()可以init配置,加载request,execute
如果有人看到我的技术文章,有疑问,欢迎私信,有问必答
网友评论