- 浏览: 408285 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
wcjagta:
...
dedecms插件开发教程 -
xc2013:
看起来不错 先下载来试试
ECSHOP完全静态化解决方法 -
greemranqq:
你好,我在xp 上做实验,也是JS css带不过来,关于 ro ...
nginx资源定向 css js路径问题 -
hotsmile:
表结构给出来吧,测试的提示说要注册,
中国移动CMPP短信开发平台通讯包 2.8 -
mengdejun:
gang80306176 写道这个插件怎么用和安装普通插件一样 ...
phpcms2008 sp4单网页编辑器插件
Index.php 小孟在线
<?php ########################################################################################### # EzMvc http://hi.baidu.com/mak0000 # 小孟在线 Mengdejun # 20100920 ########################################################################################### #引入加载器 include_once 'Ez/Loader.php'; #启动控制器派发工作 #$application->run(); $a=$application->run(); ?>
Ez/Loader.php
<?php include_once 'Loader/Cfl.php'; include_once 'Loader/Funs.php'; spl_autoload_extensions(FILE_EXTENSIONS); class Loader { public static $register_functions=array(); public static function init() { } public static function autoload($array) { foreach($array as $key=>$value): if(is_array($value)): self::autoload($value); else: include_onceEx(ereg_replace("{l}",$key,LOADER_RULE)); autoload_registerEx($value); endif; endforeach; } public static function register($function,$file=null) { if(!empty($file)&&file_exists($file)):include_onceEx($file);endif; if(function_exists($function)):autoload_registerEx($function);endif; } public static function destory() { self::$register_functions=spl_autoload_functions(); foreach(self::$register_functions as $key=>$value): spl_autoload_unregister($value); endforeach; } public static function unRegister($fun) { spl_autoload_unregister($fun); } } Loader::init(); #自动加载类注册器 Loader::autoload($class_registers); #类总控制器全局实例 global $application; $application=EzController::getInstance(); ?>
ez/loader/cfl.php
<?php ###################################################################################### #注:class_registers中注册的加载器会在启动时自动调用 ###################################################################################### define("LOADER_DIR",dirname(__FILE__));#加载器目录 define("ENABLE_SCAN_FILE",true); define("LOADER_RULE",LOADER_DIR."/{l}Loader.php");#加载器命名规范 {l}为占位符 define("FILE_EXTENSIONS",".php,.inc,.php,.ez,.php3,.php4,.phpc");#加载器类文件扩展 global $class_registers;#定义全局加载器 $class_registers[]=array ( "Core"=>"CoreRegister",#核心加载器 "Help"=>"HelpRegister",#helper加载器 "Actions"=>"WcRegister",#控制器加载器 "Url"=>"UrlRegister",#URL解析器 "Plugin"=>"PluginRegister",#插件加载器 "Vendors"=>"VendorsRegister,SmartyRegister",#默认的模板加载器 "EzDb"=>"EzDbRegister" ); $class_registers[]=array("Vendors"=>"XingCoreRegister,XingDebugRegister"); ?>
ez/loader/funs.php
<?php function include_onceEx($str,$throwAble=true) { $str=string2Array($str); for($index=0;$index<count($str);$index++): if(!empty($str[$index])&&file_exists($str[$index])): include_once(trim($str[$index])); endif; endfor; } function string2Array($str,$limiter=',') { return explode($limiter,$str); } function autoload_registerEx($str,$throwAble=true) { $str=string2Array($str); for($index=0;$index<count($str);$index++): if(!empty($str[$index])&&function_exists($str[$index])): spl_autoload_register(trim($str[$index])); endif; endfor; } ?>
ez/loader/ActionsLoader.php
<?php /** * @desc 控制器加载器 */ include_once 'Funs.php'; include_once 'Ez/Core/Cfc.php'; function WcRegister($c) { include_onceEx(WEB_ACTION_PATH."/{$c}.php"); } ?>
ez/loader/CoreLoader.php
<?php /** * @desc 核心加载器 */ include_once 'Funs.php'; include_once 'Ez/Core/Cfc.php'; function CoreRegister($c) { include_onceEx(EZ_CORE_PATH."/{$c}.php"); } ?>
Ez/Core/Controller/IController.php
<?php /** * @desc 适配器接口 * @author mengdejun */ interface IController { /** * @desc 控制器派发 * @param $cls 用户自定义派发器名 当$cls不为空时 用户指定的派发器优先于配置文件控制器 */ function dispatch($cls=null); /** * @desc 类的初始化 */ function init(); } ?>
Ez/Core/ControllerAdapter.php
<?php require_once'Controller/IController.php'; include_once'Error/ErrorMessage.php'; /** * @desc 前端派发器适配器 扩展类需继承该类或实现IController接口 * @author mengdejun */ abstract class ControllerAdapter implements IController { protected $_action=null;#请求类名 protected $_method=null;#类方法 protected $_arrays=null;#请求参数 protected $_action_instance=null;#处理类实列 protected $_aciton_reflection_class=null;#反射类 /** * @desc 类的初始化方法,该方法需初始化类变量$_action和$_method 该方法会自动被加载器调用 */ public function init() { $class=URL_RULE_HANDLER; $ins=new $class; $_temp=$ins->parse($_SERVER["REQUEST_URI"],null); $this->_arrays=$_temp; $this->_action=CONTROLLER_UCFIRST?ucfirst($_temp[ARRAY_RETURN_CONTROLLER_KEY]):$_temp[ARRAY_RETURN_CONTROLLER_KEY]; $this->_method=$_temp[ARRAY_RETURN_METHOD_KEY]; return array(ARRAY_RETURN_CONTROLLER_KEY=>$this->_action,ARRAY_RETURN_METHOD_KEY=>$this->_method); } /** * @desc 拓展方法 手动设置控制类 * @param unknown_type $action * @param unknown_type $method */ public function initEx($action=null,$method=null) { if(empty($action)||empty($method)): $this->init(); else: $this->_action=$action; $this->_method=$method; endif; } /** * 显示错误信息 * @param string 错误信息 */ public function error($s) { if(1): if(@class_exists($this->_action)): $_cls=$this->_aciton_reflection_class; $_ins=$this->_action_instance; if($_cls->isSubclassOf("MultiAction")): $_ms=$_cls->getMethod("doError"); $_ms->invokeArgs($_ins,array("method"=>$this->_method,"sender"=>$this)); endif; else: exit(str_replace("<!--error-->",$s,ERROR_MESSAGE)); endif; else: exit(str_replace("<!--error-->",$s,ERROR_MESSAGE)); endif; } /** * @return the $_action */ public function get_action() { return $this->_action; } /** * @return the $_method */ public function get_method() { return $this->_method; } /** * @param $_action the $_action to set */ public function set_action($_action) { $this->_action = $_action; } /** * @param $_method the $_method to set */ public function set_method($_method) { $this->_method = $_method; } /** * @return the $_arrays */ public function get_arrays() { return $this->_arrays; } /** * @return the $_action_instance */ public function get_action_instance() { return $this->_action_instance; } /** * @param $_action_instance the $_action_instance to set */ public function set_action_instance($_action_instance) { $this->_action_instance = $_action_instance; } /** * @return the $_aciton_reflection_class */ public function get_aciton_reflection_class() { return $this->_aciton_reflection_class; } /** * @param $_aciton_reflection_class the $_aciton_reflection_class to set */ public function set_aciton_reflection_class($_aciton_reflection_class) { $this->_aciton_reflection_class = $_aciton_reflection_class; } } ?>
ez/core/EzController.php
<?php include_once'Cfc.php'; require_once'ControllerAdapter.php'; /** * @desc ez派发控制器 * @author mengdejun * */ class EzController extends ControllerAdapter { private static $_instance=null; private function __construct(){} public static function getInstance() { if(!(self::$_instance instanceof self)): self::$_instance=new self(); endif; return self::$_instance; } public function dispatch($cls=null) { #加载派发控制器 $class=EZ_CONTROLLER_HANDLER; if(!class_exists($class)): $class=DEFAULT_ACTION_HANDLER; endif; if(!empty($cls)&&class_exists($cls)): $class=$cls; endif; $ins=new $class; #初始化前端派发器,并解析url请求对象 $ins->init(); #执行派发器派发工作 $ins->dispatch(); } public function run($cls=null) { $this->dispatch($cls); } } ?>
Ez/Core/ActionController.php
<?php include_once'Cfc.php'; include_once'ControllerAdapter.php'; /** * @desc 默认派发器实现 * @author mengdejun */ class ActionController extends ControllerAdapter { public function dispatch($cls=null) { if(@class_exists($this->_action)): $_target=new ReflectionClass($this->_action); $this->set_aciton_reflection_class($_target); if(!$_target->isAbstract()&&!$_target->isInterface()): $_ins=$_target->newInstance(); $this->set_action_instance($_ins); if($_target->hasMethod($this->_method)): if($_target->isSubclassOf("Action")): $_fun=$_target->getMethod("addVars"); $_fun->invokeArgs($_ins,(Array)$this->get_arrays()); endif; $_fun=$_target->getMethod($this->_method); $_fun->invokeArgs($_ins,$this->get_arrays()); else: $this->error("can't found any adaptive method about {$this->_method}"); endif; endif; else: $this->error("can't found any adaptive action about {$this->_action}"); endif; } } ?>
ez/core/url/iurl.php
<?php /** * @desc URL解析器接口 * @author mengdejun */ interface IUrl { /** * url解析器,返回数组array(ARRAY_RETURN_ACTION_KEY=>"",ARRAY_RETURN_METHOD_KEY=>"") * @param string $queryString */ public function parse($queryString,$class=null); } ?>
ez/core/url/UrlParamerAdapter.php
<?php include_once 'IUrl.php'; include_once 'Cfu.php'; class UrlParamerAdapter implements IUrl { public function parse($queryString,$class=null) { $_array=array(); if(URL_RULE_HANDLER==__CLASS__): $_array[ARRAY_RETURN_CONTROLLER_KEY]=!empty($_REQUEST[ACTION_KEY])?str_replace("{c}",$_REQUEST[ACTION_KEY],CONTROLLER_RULE):str_replace("{c}",WEB_DEFAULT_CONTROLLER,CONTROLLER_RULE); $_array[ARRAY_RETURN_METHOD_KEY]=!empty($_REQUEST[METHOD_KEY])?str_replace("{m}",$_REQUEST[METHOD_KEY],METHOD_RULE):str_replace("{m}",WEB_DEFAULT_METHOD,METHOD_RULE); $_array+=$_GET; else: exit("can't found any rule adaptive ".URL_RULE_HANDLER); endif; return $_array; } } ?>
ez/core/basic.php
<?php function defineEx($key,$val){if(!defined($key)):define($key,$val);endif;}#常量定义 function alias($name1,$name2){defineEx($name2,$name1);}#别名 function exist($var){return !empty($var)&&isset($var);}#检查变量是否存在 defineEx("ARRAY_RETURN_ACTION_KEY","Action");#默认控制器返回键 defineEx("ARRAY_RETURN_METHOD_KEY","Method");#默认方法返回键 alias(ARRAY_RETURN_ACTION_KEY,"ARRAY_RETURN_CONTROLLER_KEY"); alias(ARRAY_RETURN_METHOD_KEY,"ARRAY_RETURN_METHOD_KEY"); alias(null,"NULL"); alias(true,"TRUE"); alias(false,"FALSE"); ?>
ez/core/cfc.php
<?php include_once'Basic.php'; include_once'Url/Cfu.php'; defineEx("EZ_VERSION","1.2.0"); defineEx("METHOD_RULE","{m}");#方法命名规则 defineEx("CONTROLLER_RULE","{c}Action");#控制器命名规则 defineEx("WEB_PATH","App");#web目录 defineEx("EZ_PATH","Ez");#web目录 defineEx("EZ_CORE_PATH",EZ_PATH.DIRECTORY_SEPARATOR."Core");#ez目录 defineEx("EZ_HELPER_PATH",EZ_PATH.DIRECTORY_SEPARATOR."Helper");#ez目录 defineEx("EZ_LOADER_PATH",EZ_PATH.DIRECTORY_SEPARATOR."Loader");#ez目录 defineEx("EZ_PLUGIN_PATH",EZ_PATH.DIRECTORY_SEPARATOR."Plugin");#ez目录 defineEx("EZ_VENDOR_PATH",EZ_PATH.DIRECTORY_SEPARATOR."Vendor");#ez目录 defineEx("EZ_URL_PATH",EZ_CORE_PATH.DIRECTORY_SEPARATOR."Url");#ez目录 defineEx("WEB_ACTION_PATH",WEB_PATH.DIRECTORY_SEPARATOR."Controller");#控制器目录 defineEx("WEB_VIEW_PATH",WEB_PATH.DIRECTORY_SEPARATOR."View");#视图 defineEx("DEFAULT_ACTION_HANDLER","ActionController");#默认派发器 defineEx("MY_ACTION_HANDLER","MyFilterActionController");#默认派发器 defineEx("EZ_CONTROLLER_HANDLER",MY_ACTION_HANDLER);#默认派发器 ?>
鉴于页面有限,仅奉献部门代码,更多细节见 附件 下载
- ez.rar (619.4 KB)
- 下载次数: 9
发表评论
-
php异步操作类库
2011-06-05 16:01 1830httpclient for php 的选择常用方案有以 ... -
织梦HTTP IMAGE下载类
2011-06-05 14:57 1877<?php if(!defined('DEDEINC ... -
php汉字转拼音
2011-06-05 14:41 1614<?php /**************** ... -
PHP采集利器:Snoopy 试用心得
2011-06-05 14:34 14078Snoopy是一个php类,用 ... -
php异步调用 提高用户体验
2011-05-30 14:22 1320这是我的一个技术很好的朋友写的,要我发表在我的博客上可让php ... -
PHP 异步调用 后台调用 持续执行 断开连接/浏览器
2011-05-26 10:31 1720标题很怪,因为我也 ... -
php socket模拟POST GET请求 fsockopen版
2011-05-26 10:14 7390function httpRequestGET($url){ ... -
php socket GET POST提交方法(HttpClient) 框架
2011-05-25 18:29 5559<?php /* Version 0.9, 6th ... -
mantis
2011-05-25 09:50 1296mantis 缺陷管理平台Mantis,也做Mantis ... -
Curl参数一览
2011-05-06 17:30 1487* 目录 1. 介绍 ... -
PHPRPC
2011-04-24 11:01 1330PHPRPC 是一个轻型的、安全的、跨网际的、跨语言的、跨平台 ... -
PHP身份证验证程序
2011-04-24 10:56 1273<?php // 计算身份证校验码,根据国家标准GB 116 ... -
nginx 502 Bad Gateway 错误问题收集
2011-04-23 09:43 1792502是FastCGI出现问题,所以从FastCGI配置入手。 ... -
深入理解PHP内存管理之谁动了我的内存
2011-04-12 21:57 851首先让我们看一个问题: ... -
socket模拟post表单
2011-04-11 15:40 2810post的本质就是发送给目的程序一个标志为post的协议串如下 ... -
OAUTH协议
2011-04-09 09:59 1117OAUTH协议为用户资源的 ... -
nginx/windows: 让nginx以服务的方式运行
2011-04-09 09:33 1158在windows下安装了nginx, 郁闷是发现它没有以服 ... -
ThinkPHP处理海量数据分表机制详细代码
2011-04-07 18:27 7226应用ThinkPHP内置的分表算法处理百万级用户数据. ... -
php 分库分表hash算法
2011-04-07 18:16 1702//分库分表算法 function calc_hash_d ... -
nginx配置文件实例: php (fastcgi), perl, proxy, rrd, nagios
2011-04-06 20:33 1840nginx.conf worker_processes 5; ...
相关推荐
标题“自己利用mvc写的框架”表明这是一个个人开发的基于MVC(Model-View-Controller)设计模式的软件框架。MVC是一种常见的软件架构模式,广泛应用于Web应用开发,它将应用程序分为三个核心部分:模型、视图和控制...
在IT行业中,MVC(Model-View-Controller)是一种广泛应用于软件开发的架构模式,尤其在Web应用领域中。这个模式将应用程序分为三个主要部分,每个部分都有明确的责任,从而提高了代码的可维护性和可扩展性。本项目...
**标题:“写你自己的MVC框架”** 在IT领域,MVC(Model-View-Controller)框架是一种广泛使用的软件设计模式,尤其在Web应用开发中。这个标题暗示我们将探讨如何从头开始构建一个MVC框架。MVC模式将应用程序分为三...
【标题】:“DWZ框架与ASP.NET MVC3的结合应用” 【内容】 DWZ框架,全称为“Dynamic Web Zone”,是一款基于JavaScript的前端UI框架,主要用于构建富互联网应用程序(RIA)。它提供了丰富的组件库,包括表格、...
C# MVC(Model-View-Controller)经典框架是基于微软.NET平台的一种强大的Web应用程序开发模式。这个框架结合了MVC设计模式的灵活性和C#语言的强类型特性,为开发者提供了构建可维护、高性能和高度分层的Web应用的...
在软件开发领域,Model-View-Controller(MVC)架构是一种广泛应用的设计模式,尤其是在图形用户界面(GUI)的开发中。Qt,一个流行的跨平台应用开发框架,也支持MVC模式,使得开发者能够构建可扩展且易于维护的复杂...
在PHP世界里,许多著名的框架如 Laravel、Symfony 和 CodeIgniter 都采用了MVC架构。 **标题** "PHP MVC框架" 指的是使用PHP编程语言实现的基于MVC模式的框架。这些框架帮助开发者更有效地组织和管理代码,使项目...
MVC(Model-View-Controller)架构模式则是SSH框架设计的基础,它将应用程序分为三个主要部分:模型、视图和控制器。 1. **模型层(Model)**:在这个层次,主要关注业务逻辑和数据处理。Hibernate框架是SSH中的...
如果你不打算使用框架,也可以自己构建MVC结构。首先,定义一个基本的路由系统来解析URL并调用相应的控制器方法。然后,创建模型类来处理数据,视图文件来展示结果,最后实现控制器来协调这些组件。这将需要更多的...
综上所述,MVC模式作为软件开发中的一种重要设计理念,通过其独特的架构模式,为开发者提供了一种高效、灵活和可扩展的解决方案。然而,是否采用MVC模式以及如何实施,都需要根据具体的项目需求和团队技能进行综合...
在这个标题为“MVC框架源代码(自己写的)”的压缩包中,我们推测作者分享的是他自己实现的一个JavaScript MVC框架的源代码,这可能是对经典MVC模式的一种个人化实现。 **1. Model(模型)** 模型层是MVC的核心,它...
标题提到的是“自己利用mvc写了个简单的框架”,这表明这是一个个人实践项目,目的是构建一个基于Model-View-Controller(MVC)设计模式的轻量级框架。MVC是一种软件架构模式,它将应用程序的业务逻辑、用户界面和...
MVC模式下多层分布式软件系统架构设计是软件工程领域中的一种...实验结果表明,通过MVC模式和SSH框架相结合的架构设计,软件系统不仅运行效率高,而且在能耗方面也有优异的表现,说明所采取的架构设计方法是有效的。
《架构探险:从零开始写JavaWeb框架》是一本深入探讨JavaWeb开发技术的书籍,其核心内容是通过源码分析来帮助读者理解并构建自己的Web框架。书中的源码提供了实际的编程实践,使读者能够亲身体验到JavaWeb框架的实现...
**简单的MVC框架例子** 在Web开发中,MVC(Model-View-Controller)模式是一种广泛应用的设计模式,它将应用程序的结构分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。这个简单的MVC框架...
### 传统MVC架构与前后端分离架构对比 #### 一、引言 在软件开发领域,架构设计的选择对于项目的成功至关重要。其中,MVC(Model-View-Controller)架构和前后端分离架构是最常见的两种架构模式。这两种模式各有...
Web架构——MVC Web架构——MVC Web架构——MVC Web架构——MVC