close
前一陣子跑去玩了一下ASP.NET,從那邊學了一些東西拿到PHP上來用...
寫了一個小程式,運用事件的觀念,使用function把整個程式切開來,發現主程式已經能夠只表現流程,不含其他的程式碼...
底下是一個例子(include的那些函數跟物件我沒貼出來):
PS. 一開始也是寫的很混亂,這是慢慢的整理出來的結果
<?php
// 連結檔案
require_once dirname(__FILE__).'/link.php';
主程式();
function 主程式() {
global $_頁面, $_解析, $_模組, $_訊息, $_錯誤, $_設定;
初始();
if (驗證()) {
分配();
}
分頁();
表列();
解析();
}
function 初始() {
global $_頁面, $_解析, $_模組, $_訊息, $_錯誤, $_設定;
$模組 = array(
'樣板' => &$_設定['樣板']['樣板檔案'],
'資料庫' => &$_設定['資料庫']['連結'],
);
$_模組 = 模組::載入($模組);
}
function 驗證() {
global $_頁面, $_解析, $_模組, $_訊息, $_錯誤, $_設定;
$輸出 = true;
$_頁面['表名陣列'] = array(
'news_type' => '新聞分類',
'history_type' => '事記分類',
'product_type' => '產品分類'
);
$_頁面['表名'] = 檢查變數($_REQUEST['表名']);
if (false == array_key_exists($_頁面['表名'], $_頁面['表名陣列'])) {
$_頁面['表名'] = key($_頁面['表名陣列']);
$輸出 = false;
}
return $輸出;
}
function 分配() {
global $_頁面, $_解析, $_模組, $_訊息, $_錯誤, $_設定;
switch (檢查變數($_POST['動作'])) {
case '新增':
新增();
break;
case '修改':
修改();
break;
}
}
function 新增() {
global $_頁面, $_解析, $_模組, $_訊息, $_錯誤, $_設定;
$表名 = $_頁面['表名'];
$資料庫 = &$_模組['資料庫'];
$類名陣列 = explode("\n", 檢查變數($_POST['新增']['類名']));
foreach($類名陣列 as $類名) {
$類名 = trim($類名);
if ('' != $類名) {
$欄位 = array('類名' => $類名);
$資料庫->autoExecute($表名, $欄位, DB_AUTOQUERY_INSERT);
}
}
}
function 修改() {
global $_頁面, $_解析, $_模組, $_訊息, $_錯誤, $_設定;
$表名 = $_頁面['表名'];
檢查變數($_POST['主鍵'], array());
foreach($_POST['主鍵'] as $主鍵 => $虛值) {
$狀態 = 檢查變數($_POST['狀態'][$主鍵], 0, 'int');
$類名 = trim(檢查變數($_POST['類名'][$主鍵], ''));
if ('' != $類名) {
$欄位 = array('狀態' => $狀態, '類名' => $類名);
$_模組['資料庫']->autoExecute($表名, $欄位, DB_AUTOQUERY_UPDATE, "主鍵=$主鍵");
}
}
}
function 分頁() {
global $_頁面, $_解析, $_模組, $_訊息, $_錯誤, $_設定;
$資料庫 = &$_模組['資料庫'];
$_設定['分頁']['totalItems'] = 資料庫::總數($資料庫, $資料庫->quoteIdentifier($_頁面['表名']));
$_設定['分頁']['currentPage'] = 檢查變數($_REQUEST['pageID'], 0, 'int');
$_設定['分頁']['extraVars']['表名'] = $_頁面['表名'];
$_模組['分頁'] = 模組::分頁($_設定['分頁']);
}
function 表列() {
global $_頁面, $_解析, $_模組, $_訊息, $_錯誤, $_設定;
$資料庫 = &$_模組['資料庫'];
$分頁 = &$_模組['分頁'];
$命令 = sprintf('SELECT 主鍵, 狀態, 類名 FROM %s', $資料庫->quoteIdentifier($_頁面['表名']));
$_解析['區塊'] = 資料庫::分頁($資料庫, $命令, $分頁->getOffsetByPageId());
$_解析['全域'] = array(
'網頁標題' => $_頁面['表名陣列'][$_頁面['表名']],
'動作' => $_SERVER['PHP_SELF'],
'分頁' => $分頁->links,
'頁碼' => $分頁->getCurrentPageID(),
'表名' => $_頁面['表名']
);
}
function 解析() {
global $_頁面, $_解析, $_模組, $_訊息, $_錯誤, $_設定;
$樣板 = &$_模組['樣板'];
$樣板->setCurrentBlock();
解析區塊::表列($樣板, '區塊', '奇偶', '奇', '偶', $_解析['區塊']);
$樣板->setVariable($_解析['全域']);
$樣板->show();
}
?>
寫了一個小程式,運用事件的觀念,使用function把整個程式切開來,發現主程式已經能夠只表現流程,不含其他的程式碼...
底下是一個例子(include的那些函數跟物件我沒貼出來):
PS. 一開始也是寫的很混亂,這是慢慢的整理出來的結果
<?php
// 連結檔案
require_once dirname(__FILE__).'/link.php';
主程式();
function 主程式() {
global $_頁面, $_解析, $_模組, $_訊息, $_錯誤, $_設定;
初始();
if (驗證()) {
分配();
}
分頁();
表列();
解析();
}
function 初始() {
global $_頁面, $_解析, $_模組, $_訊息, $_錯誤, $_設定;
$模組 = array(
'樣板' => &$_設定['樣板']['樣板檔案'],
'資料庫' => &$_設定['資料庫']['連結'],
);
$_模組 = 模組::載入($模組);
}
function 驗證() {
global $_頁面, $_解析, $_模組, $_訊息, $_錯誤, $_設定;
$輸出 = true;
$_頁面['表名陣列'] = array(
'news_type' => '新聞分類',
'history_type' => '事記分類',
'product_type' => '產品分類'
);
$_頁面['表名'] = 檢查變數($_REQUEST['表名']);
if (false == array_key_exists($_頁面['表名'], $_頁面['表名陣列'])) {
$_頁面['表名'] = key($_頁面['表名陣列']);
$輸出 = false;
}
return $輸出;
}
function 分配() {
global $_頁面, $_解析, $_模組, $_訊息, $_錯誤, $_設定;
switch (檢查變數($_POST['動作'])) {
case '新增':
新增();
break;
case '修改':
修改();
break;
}
}
function 新增() {
global $_頁面, $_解析, $_模組, $_訊息, $_錯誤, $_設定;
$表名 = $_頁面['表名'];
$資料庫 = &$_模組['資料庫'];
$類名陣列 = explode("\n", 檢查變數($_POST['新增']['類名']));
foreach($類名陣列 as $類名) {
$類名 = trim($類名);
if ('' != $類名) {
$欄位 = array('類名' => $類名);
$資料庫->autoExecute($表名, $欄位, DB_AUTOQUERY_INSERT);
}
}
}
function 修改() {
global $_頁面, $_解析, $_模組, $_訊息, $_錯誤, $_設定;
$表名 = $_頁面['表名'];
檢查變數($_POST['主鍵'], array());
foreach($_POST['主鍵'] as $主鍵 => $虛值) {
$狀態 = 檢查變數($_POST['狀態'][$主鍵], 0, 'int');
$類名 = trim(檢查變數($_POST['類名'][$主鍵], ''));
if ('' != $類名) {
$欄位 = array('狀態' => $狀態, '類名' => $類名);
$_模組['資料庫']->autoExecute($表名, $欄位, DB_AUTOQUERY_UPDATE, "主鍵=$主鍵");
}
}
}
function 分頁() {
global $_頁面, $_解析, $_模組, $_訊息, $_錯誤, $_設定;
$資料庫 = &$_模組['資料庫'];
$_設定['分頁']['totalItems'] = 資料庫::總數($資料庫, $資料庫->quoteIdentifier($_頁面['表名']));
$_設定['分頁']['currentPage'] = 檢查變數($_REQUEST['pageID'], 0, 'int');
$_設定['分頁']['extraVars']['表名'] = $_頁面['表名'];
$_模組['分頁'] = 模組::分頁($_設定['分頁']);
}
function 表列() {
global $_頁面, $_解析, $_模組, $_訊息, $_錯誤, $_設定;
$資料庫 = &$_模組['資料庫'];
$分頁 = &$_模組['分頁'];
$命令 = sprintf('SELECT 主鍵, 狀態, 類名 FROM %s', $資料庫->quoteIdentifier($_頁面['表名']));
$_解析['區塊'] = 資料庫::分頁($資料庫, $命令, $分頁->getOffsetByPageId());
$_解析['全域'] = array(
'網頁標題' => $_頁面['表名陣列'][$_頁面['表名']],
'動作' => $_SERVER['PHP_SELF'],
'分頁' => $分頁->links,
'頁碼' => $分頁->getCurrentPageID(),
'表名' => $_頁面['表名']
);
}
function 解析() {
global $_頁面, $_解析, $_模組, $_訊息, $_錯誤, $_設定;
$樣板 = &$_模組['樣板'];
$樣板->setCurrentBlock();
解析區塊::表列($樣板, '區塊', '奇偶', '奇', '偶', $_解析['區塊']);
$樣板->setVariable($_解析['全域']);
$樣板->show();
}
?>
全站熱搜
留言列表