IDO網路程式設計框架
阿新 • • 發佈:2019-02-11
目錄結構:
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;
}
?>