一.文件结构
├ 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 后台
├
├
二.简单类图
三. 入口文件,index.php
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
<?php
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
define("EXEC",1); //初始化一个常量,保存别的文件必须先有这个入口文件的引用.
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
define('PATH_BASE',dirname(__FILE__)); //获取入口文件的路径
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
define('DS', DIRECTORY_SEPARATOR); //目录的分隔,’/’ 或’’
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
define( 'PATH_ROOT', PATH_BASE ); //站点的跟目录,跟据你的入品文件存放来定义,如果放在子目录下,则要做相应修改.如下,
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//把路径分组
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
{parts = explode( DS, PATH_BASE );
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//去除最后一个路径名
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
array_pop( parts );
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
define( 'PATH_ROOT', implode( DS, parts ) );}
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
require_once(PATH_ROOT.DS.'includes'.DS.'defines.inc.php'); //各文件夹的路径
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
require_once(PATH_ROOT.DS.'includes'.DS.'framework.inc.php');
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
echo request->Get('a');//参数的获取GET方法
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
request->Post(‘a’);//获取POST参数
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
?>
四. 路径定义文件 defines.inc.php
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
<?php
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
/*
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
*/
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
// no direct access
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
defined( 'EXEC' ) or die( 'Restricted access' ); //如果单独执行这个文件,将不能执行
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//站点路径
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
define( 'PATH_SITE', PATH_ROOT );
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//包含文件路径
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
define( 'PATH_INCLUDE', PATH_ROOT.DS.'includes');
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//类文件路径
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
define( 'PATH_CLASS', PATH_ROOT.DS.'class' );
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//配置文件路径
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
define( 'PATH_CONFIG', PATH_ROOT );
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
?>
五. 框架文件路径 frameword.inc.php
f
<?php
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
// no direct access
defined( 'EXEC' ) or die( 'Restricted access' );
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//load error class
require_once( PATH_CLASS.DS.'error.class.php'); //包含错误处理文件
//load base class
require_once( PATH_CLASS.DS.'base.class.php' ); //包含基类文件
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//实例化基类
load=new Base();
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//实列化请求类 用于获取GET或POST
//加截一个自己写的类的方法
//把自己写的类放在class 文件夹下面,文件名的格式为demo.class.php
//那么类名就为 class demo{}
//实便化的方式为demo=load->library(‘demo’);
//调用demo类的Get函数则为 demo->Get(‘参数’);
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
request=load->library('params');
//不同的目录用不同的URL方式
require_once( PATH_BASE.DS.'includes'.DS.'router.inc.php' );
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
?>
六. 基类函数包含了常用的功能 base.class.php
<?php
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
// no direct access
defined( 'EXEC' ) or die( 'Restricted access' );
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
class Base extends Error
{
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
var path_root ='';
var path_class ='';
var path_control ='';
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
/*/构造函数
*@parame path 应用路径
*return null
*/
public function Base()
{
this->path_root =PATH_ROOT;
this->path_class =PATH_CLASS;
this->path_control=PATH_BASE.DS.'controls';
}
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//加载模型
//load model
function model(name)
{
include_once (this->path_model.DS.name.'.php');
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
model=null;
if(model==null)
{
model=new name();
}
return model;
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
}
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//output page
/*
*@paramater name file name
*@paramater data replace
*
*/
function view(name,data)
{
Template=self::template(file);
Template->output(data);
unset(Template);
}
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//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;
}
}
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//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');
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
return Template;
}
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//import class
function library(className)
{
if(empty(className))
{
return null;
exit();
}
else
{
require_once(PATH_CLASS.DS.className.'.class.php');
return new className();
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
}
}
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//return config value
function config(parameter)
{
require_once(PATH_CONFIG.DS.'config.php');
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
return CONFIG::Ini()->parameter;
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
}
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
}
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
?>
七. 控制器父类control.class.php
<?php
class Control
extends Base
{
var
request;
function Control()
{
this->request=this->library('params
');
}
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
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
'));
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
Template->assign(
data);
Template
->output();
unset(
Template);
}
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
//
load model
function model(
name)
{
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
include_once (PATH_BASE.DS.'models'.DS.name.'.php
');
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
if(this->model==
null)
{
this->model=new
name();
}
return this
->model;
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
}
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
}
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
?>