您的位置:首页 > 编程语言 > PHP开发

自已编写基于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;

}

}

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐