自已编写基于MVC的php超轻量级开发框架
2011-10-04 17:00
726 查看
一.文件结构
├ index.php 入口文件
├ class 类存放的文件夹
├ base.class.php 基类
├ error.class.php 错误处理类
├ parms.class.php 获取参数类
├ control.class.php 控制类
├ model.class.php 模型类
├ template smartTemplate 类存放文件夹
├ db adodb 类存放文件夹
├ includes 包含文件类
├ defines.inc.php 定义各路径文件
├ frameword.inc.php 框架处理文件
├ router.inc.php 路由文件,跟据参数,跳转不同路径
├ models 模式存放路径
├ views 模版文件保存路径
├ controls 存放控制类的文件夹
├ config.php 配置文件
├ admin 后台
├
├
二.简单类图
<?php
define("EXEC",1); //初始化一个常量,保存别的文件必须先有这个入口文件的引用.
define('PATH_BASE',dirname(__FILE__)); //获取入口文件的路径
define('DS', DIRECTORY_SEPARATOR); //目录的分隔,’/’ 或’’
define( 'PATH_ROOT', PATH_BASE ); //站点的跟目录,跟据你的入品文件存放来定义,如果放在子目录下,则要做相应修改.如下,
//把路径分组
{parts = explode( DS, PATH_BASE );
//去除最后一个路径名
array_pop( parts );
define( 'PATH_ROOT', implode( DS, parts ) );}
require_once(PATH_ROOT.DS.'includes'.DS.'defines.inc.php'); //各文件夹的路径
require_once(PATH_ROOT.DS.'includes'.DS.'framework.inc.php');
echo request->Get('a');//参数的获取GET方法
request->Post(‘a’);//获取POST参数
?>
四. 路径定义文件 defines.inc.php
<?php
/*
*/
// no direct access
defined( 'EXEC' ) or die( 'Restricted access' ); //如果单独执行这个文件,将不能执行
//站点路径
define( 'PATH_SITE', PATH_ROOT );
//包含文件路径
define( 'PATH_INCLUDE', PATH_ROOT.DS.'includes');
//类文件路径
define( 'PATH_CLASS', PATH_ROOT.DS.'class' );
//配置文件路径
define( 'PATH_CONFIG', PATH_ROOT );
?>
五. 框架文件路径 frameword.inc.php
f
<?php
// no direct access
defined( 'EXEC' ) or die( 'Restricted access' );
//load error class
require_once( PATH_CLASS.DS.'error.class.php'); //包含错误处理文件
//load base class
require_once( PATH_CLASS.DS.'base.class.php' ); //包含基类文件
//实例化基类
load=new Base();
//实列化请求类 用于获取GET或POST
//加截一个自己写的类的方法
//把自己写的类放在class 文件夹下面,文件名的格式为demo.class.php
//那么类名就为 class demo{}
//实便化的方式为demo=load->library(‘demo’);
//调用demo类的Get函数则为 demo->Get(‘参数’);
request=load->library('params');
//不同的目录用不同的URL方式
require_once( PATH_BASE.DS.'includes'.DS.'router.inc.php' );
?>
六. 基类函数包含了常用的功能 base.class.php
<?php
// no direct access
defined( 'EXEC' ) or die( 'Restricted access' );
class Base extends Error
{
var path_root ='';
var path_class ='';
var path_control ='';
/*/构造函数
*@parame path 应用路径
*return null
*/
public function Base()
{
this->path_root =PATH_ROOT;
this->path_class =PATH_CLASS;
this->path_control=PATH_BASE.DS.'controls';
}
//加载模型
//load model
function model(name)
{
include_once (this->path_model.DS.name.'.php');
model=null;
if(model==null)
{
model=new name();
}
return model;
}
//output page
/*
*@paramater name file name
*@paramater data replace
*
*/
function view(name,data)
{
Template=self::template(file);
Template->output(data);
unset(Template);
}
//create database connection
function database()
{
include_once (PATH_CLASS.DS.'db'.DS.'adodb.inc.php');
this->db = ADONewConnection();
this->db->createdatabase = true;
result = this->db->Connect(self::config('db_host') , self::config('db_user'), self::config('db_password'), self::config('db_database') );
if(!result)
{
die("Could not connect to the database.");
}else{
this->db->Execute("set names 'utf8'");
return this->db;
}
}
//create template
function template(file)
{
include_once (PATH_CLASS.DS.'template'.DS.'class.smarttemplate.php');
Template = new Smarttemplate(file);
Template->template_dir=PATH_BASE.self::config('template_dir');
Template->cache_dir =PATH_BASE.self::config('cache_dir');
return Template;
}
//import class
function library(className)
{
if(empty(className))
{
return null;
exit();
}
else
{
require_once(PATH_CLASS.DS.className.'.class.php');
return new className();
}
}
//return config value
function config(parameter)
{
require_once(PATH_CONFIG.DS.'config.php');
return CONFIG::Ini()->parameter;
}
}
?>
七.控制器父类control.class.php
<?php
class Control extends Base
{
var request;
function Control()
{
this->request=this->library('params');
}
//output page
/*
*@paramater name file name
*@paramater data replace
*
*/
function view(name,data='')
{
Template=this->template(name.'.html');
Template->assign('site_root',this->config('site_root'));
Template->assign(data);
Template->output();
unset(Template);
}
//load model
function model(name)
{
include_once (PATH_BASE.DS.'models'.DS.name.'.php');
if(this->model==null)
{
this->model=new name();
}
return this->model;
}
}
?>
├ index.php 入口文件
├ class 类存放的文件夹
├ base.class.php 基类
├ error.class.php 错误处理类
├ parms.class.php 获取参数类
├ control.class.php 控制类
├ model.class.php 模型类
├ template smartTemplate 类存放文件夹
├ db adodb 类存放文件夹
├ includes 包含文件类
├ defines.inc.php 定义各路径文件
├ frameword.inc.php 框架处理文件
├ router.inc.php 路由文件,跟据参数,跳转不同路径
├ models 模式存放路径
├ views 模版文件保存路径
├ controls 存放控制类的文件夹
├ config.php 配置文件
├ admin 后台
├
├
二.简单类图
<?php
define("EXEC",1); //初始化一个常量,保存别的文件必须先有这个入口文件的引用.
define('PATH_BASE',dirname(__FILE__)); //获取入口文件的路径
define('DS', DIRECTORY_SEPARATOR); //目录的分隔,’/’ 或’’
define( 'PATH_ROOT', PATH_BASE ); //站点的跟目录,跟据你的入品文件存放来定义,如果放在子目录下,则要做相应修改.如下,
//把路径分组
{parts = explode( DS, PATH_BASE );
//去除最后一个路径名
array_pop( parts );
define( 'PATH_ROOT', implode( DS, parts ) );}
require_once(PATH_ROOT.DS.'includes'.DS.'defines.inc.php'); //各文件夹的路径
require_once(PATH_ROOT.DS.'includes'.DS.'framework.inc.php');
echo request->Get('a');//参数的获取GET方法
request->Post(‘a’);//获取POST参数
?>
四. 路径定义文件 defines.inc.php
<?php
/*
*/
// no direct access
defined( 'EXEC' ) or die( 'Restricted access' ); //如果单独执行这个文件,将不能执行
//站点路径
define( 'PATH_SITE', PATH_ROOT );
//包含文件路径
define( 'PATH_INCLUDE', PATH_ROOT.DS.'includes');
//类文件路径
define( 'PATH_CLASS', PATH_ROOT.DS.'class' );
//配置文件路径
define( 'PATH_CONFIG', PATH_ROOT );
?>
五. 框架文件路径 frameword.inc.php
f
<?php
// no direct access
defined( 'EXEC' ) or die( 'Restricted access' );
//load error class
require_once( PATH_CLASS.DS.'error.class.php'); //包含错误处理文件
//load base class
require_once( PATH_CLASS.DS.'base.class.php' ); //包含基类文件
//实例化基类
load=new Base();
//实列化请求类 用于获取GET或POST
//加截一个自己写的类的方法
//把自己写的类放在class 文件夹下面,文件名的格式为demo.class.php
//那么类名就为 class demo{}
//实便化的方式为demo=load->library(‘demo’);
//调用demo类的Get函数则为 demo->Get(‘参数’);
request=load->library('params');
//不同的目录用不同的URL方式
require_once( PATH_BASE.DS.'includes'.DS.'router.inc.php' );
?>
六. 基类函数包含了常用的功能 base.class.php
<?php
// no direct access
defined( 'EXEC' ) or die( 'Restricted access' );
class Base extends Error
{
var path_root ='';
var path_class ='';
var path_control ='';
/*/构造函数
*@parame path 应用路径
*return null
*/
public function Base()
{
this->path_root =PATH_ROOT;
this->path_class =PATH_CLASS;
this->path_control=PATH_BASE.DS.'controls';
}
//加载模型
//load model
function model(name)
{
include_once (this->path_model.DS.name.'.php');
model=null;
if(model==null)
{
model=new name();
}
return model;
}
//output page
/*
*@paramater name file name
*@paramater data replace
*
*/
function view(name,data)
{
Template=self::template(file);
Template->output(data);
unset(Template);
}
//create database connection
function database()
{
include_once (PATH_CLASS.DS.'db'.DS.'adodb.inc.php');
this->db = ADONewConnection();
this->db->createdatabase = true;
result = this->db->Connect(self::config('db_host') , self::config('db_user'), self::config('db_password'), self::config('db_database') );
if(!result)
{
die("Could not connect to the database.");
}else{
this->db->Execute("set names 'utf8'");
return this->db;
}
}
//create template
function template(file)
{
include_once (PATH_CLASS.DS.'template'.DS.'class.smarttemplate.php');
Template = new Smarttemplate(file);
Template->template_dir=PATH_BASE.self::config('template_dir');
Template->cache_dir =PATH_BASE.self::config('cache_dir');
return Template;
}
//import class
function library(className)
{
if(empty(className))
{
return null;
exit();
}
else
{
require_once(PATH_CLASS.DS.className.'.class.php');
return new className();
}
}
//return config value
function config(parameter)
{
require_once(PATH_CONFIG.DS.'config.php');
return CONFIG::Ini()->parameter;
}
}
?>
七.控制器父类control.class.php
<?php
class Control extends Base
{
var request;
function Control()
{
this->request=this->library('params');
}
//output page
/*
*@paramater name file name
*@paramater data replace
*
*/
function view(name,data='')
{
Template=this->template(name.'.html');
Template->assign('site_root',this->config('site_root'));
Template->assign(data);
Template->output();
unset(Template);
}
//load model
function model(name)
{
include_once (PATH_BASE.DS.'models'.DS.name.'.php');
if(this->model==null)
{
this->model=new name();
}
return this->model;
}
}
?>
相关文章推荐
- 基于MVC+EasyUI的Web开发框架经验总结(10)--在Web界面上实现数据的导入和导出
- 基于MVC+EasyUI的Web开发框架经验总结(11)--使用Bundles处理简化页面代码
- 基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)介绍(二)
- ExtJS(MVC)+PHP(ThinkPHP)+MySql5.0 开发框架准备阶段
- 基于MVC+EasyUI的Web开发框架经验总结(12)--利用Jquery处理数据交互的几种方式
- 如何提高码农产量,基于ASP.NET MVC的敏捷开发框架之自定义表单开发随笔四
- 基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)--模块开发
- ExtJS(MVC)+PHP(ThinkPHP)+MySql5.0 开发框架准备阶段--mySql篇
- 基于PHP的新Web开发框架
- 基于MVC+EasyUI的Web开发框架经验总结(1)-利用jQuery Tags Input 插件显示选择记录
- 基于MVC+EasyUI的Web开发框架经验总结(5)--使用HTML编辑控件CKEditor和CKFinder
- 如何提高码农产量,基于ASP.NET MVC的敏捷开发框架之移动端开发随笔二
- 如何提高码农产量,基于ASP.NET MVC的敏捷开发框架开发随笔一
- 构建基于MVC+Observer模式的、艺术性的移动开发框架(KJAVA版)(二)
- 构建基于MVC+Observer模式的、艺术性的移动开发框架(KJAVA版)(一)
- 基于MVC+EasyUI的Web开发框架经验总结(13)--DataGrid控件实现自动适应宽带高度
- 基于ASP.NET MVC框架开发Web论坛应用程序
- 基于 Cairngorm MVC 框架的 Flex 程序设计与开发
- 构建基于MVC+Observer模式的、艺术性的移动开发框架(KJAVA版)(二)
- 手把手编写自己的 PHP MVC 框架实例教程