目录结构:
root
|-- index.php --------- 入口文件
|-- init.php --------- 初始化文件
|-- config.php --------- 配置文件
|-- in --------- 输入处理目录
| `-- in.php --------- 输入处理入口文件
|-- do --------- 数据操作目录
| `-- do.php --------- 数据操作入口文件
|-- out --------- 输出处理目录
| `-- out.php--------- 输出处理入口文件
`-- doc --------- 文档目录
文件内容:
index.php
<?php
require_once ("config.php"); //--
require_once ("init.php"); // \
require_once ("out/out.php");// | -- 包含配置文件,初始化文件,和所有的入口文件,其顺序不可颠倒
require_once ("do/do.php"); // /
require_once ("in/in.php"); //--
in_start(); //------ 输入处理入口函数
?>
init.php
<?php
//内容没有限制,根据自己需要定制
?>
config.php
<?php
//内容没有限制,根据自己需要定制
?>
in/in.php
<?php
function in_make_out_desc($args) // 生成基本的输出需要的参数和数据,
{ // 例如制定输出方式,或者输出函数
if ( empty($args) )
{
$args{"index"} = true;
$args{"browser_from"} = "pc_browser";
}
return $args;
}
function in_start() // 输入处理入口函数
{ // 该函数将会把处理后的参数分别发送到out_prepare()
$args = array_merge($_GET, $_POST); // 和do_start()函数中
out_prepare(in_make_out_desc($args));
do_start($args);
}
?>
do/do.php
<?php
function do_action($args)
{
if ( !isset($args{"act"}) ) // 由act指定文件路径和函数名:path|func
return array(); // 如果没有定义,则返回array()
chdir("../do/"); // 将工作路径切换到do/
$file_list = explode("|", $args{"act"});// 将func前面的路径及文件都包含进来
$path = $file_list{0};
for ($i=1; $i<count($file_list); $i++)
{
if ( is_dir($path) && is_file($path."/".$file_list{$i-1}.".php") )
require_once($path."/".$file_list{$i-1}.".php");
$path = $path."/".$file_list{$i};
}
return function_exists($file_list{1}) ? $file_list{1}($args) : array(); // 函数必须在已包含的文件中定义
}
function do_start($args)
{
out_start(do_action($args)); // 接收in_start()传来的参数,将其处理后传递给out_start();
}
?>
out/out.php
<?php
$__OUT_ARGS = array(); // 保存输出描述参数
function output_index($from)
{
switch ($from)
{
case "pc_browser" :
echo file_get_contents("out/pc_browser/index.html");
exit(0);
default :
echo "Not Suport";
exit(0);
}
return 0;
}
/**
* 该函数接收来自do_action()传递过来的参数,
* 该参数包括了所有要输出的数据,
* 当该函数被调用时,将按照__OUT_ARGS中的输出信息进行输出
* 信息
*
* @param array $data
*/
function out_start($data)
{
global $__OUT_ARGS;
if ( isset($__OUT_ARGS{"index"}) )
return output_index($__OUT_ARGS{"browser_from"});
else if ( isset( $__OUT_ARGS{"func"} ) )
return $__OUT_ARGS{"func"}($data);
else if ( isset($__OUT_ARGS{"type"}) )
return $__OUT_ARGS{"type"}($data);
else
{
require_once(DEFAULT_OUPUT_TYPE.".php");
$func = DEFAULT_OUPUT_TYPE;
return $func($data);
}
}
/**
* 接收从in()传递过来的参数,将其放入OUT_ARGS变量中,准备使用
* 该参数描述来了输出数据的类型或者执行输出是调用的函数。
*
* @param array $args
*/
function out_prepare($args)
{
global $__OUT_ARGS;
$__OUT_ARGS = $args;
}
?>