Re: [請益] 為什麼要把所有功能寫在同一頁
恕略過原文, 我試著舉一個例子來說明基於維護上的考量而決定採用何種樣式.
樣式1:
與用戶相關的操作, 通通集中在 user.php 裏. 而user.php內部的程式結構,
大致上是:
<?php
//1 載入組態檔:
//2 對於傳進來的參數進行剖析:
//3 對目前調用這份執行稿的用戶進行身份驗證及權限檢查:
//3.1 若身份驗證未過或權限不足, 則中止執行, 程序導向錯誤回報處理.
//4 根據傳進來的參數判斷用戶所要求的操作:
switch($operation){
case 'add':
//...
break;
case 'view':
//...
break;
case 'edit':
//...
break;
case 'delete':
//...
break;
default:
//未被定義的操作, 程序導向錯誤回報處理.
}
?>
樣式2:
與用戶相關的操作, 分別用檔案維護, 大致上是:
user_add.php
user_view.php
user_edit.php
user_delete.php
以 user_add.php 為例 :
<?php
//1 載入組態檔:
//2 對於傳進來的參數進行剖析:
//3 對目前調用這份執行稿的用戶進行身份驗證及權限檢查:
//3.1 若身份驗證未過或權限不足, 則中止執行, 程序導向錯誤回報處理.
//4 進行新增用戶的作業:
?>
樣式1 跟 樣式2 都有人採用, 而且在一些目前蠻popular的open source
當中都能夠發現, 兩種方式都是可行的. 至於決定採用哪種樣式的考量點
是什麼? 這裏就僅針對'維護'做討論:
個人兩種樣式都是混著用, 最早剛寫php是採用樣式2, 因為那時候第一手
入手的範本就是以樣式2設計的. 後來基於以前c/c++編程的習慣, 有一陣
子都是用樣式1, 又再後來直到現在是會看情況混用, 若程式規模小的則習
慣用樣式1, 而若規模大一點的會偏好於採用樣式2.
因為程式規模小(就專門處理某個特定的需求,整個程式大約200~300行左右)
的話, 樣式1即已足夠. 而採用樣式2則是考量到: 這些 user 的
add/view/edit/delete 各有各的被執行的條件, 而這些條件彼此之間關聯
性很小, 又經常因為需求的變動而需要對程式碼做改變, 這樣還是分開維護
比較好.
例如以 user_view.php 為例:
<?php
//1 載入組態檔:
//2 對於傳進來的參數進行剖析:
//3 對目前調用這份執行稿的用戶(以下簡稱[檢視者])進行身份驗證及權限檢查:
//3.1 必須與[被檢視者]是同一人,
//3.2 或是具有[管理者]身份,
//3.3 或是[檢視者]在[被檢視者]的好友名單當中.
//3.4 若身份驗證未過或權限不足, 則中止執行, 程序導向錯誤回報處理.
//4 進行檢視用戶的作業:
?>
可能日後user_view.php又多了些權限檢查的條件, 例如:
//3.4 [被檢視者]若關閉個人履歷(profile), 則除了本人及管理者外,
任何人都不能檢視.
對於user_view.php而言, 它的權限檢查就僅跟user_view有關, 跟
add,delete,edit無關, 這就不宜把彼此之間無關的操作綁在一起, 增加
維護的複雜性.
就先醬子囉.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 58.115.151.184
推
01/24 14:06, , 1F
01/24 14:06, 1F
→
01/24 14:07, , 2F
01/24 14:07, 2F
推
01/24 14:19, , 3F
01/24 14:19, 3F
→
01/24 14:19, , 4F
01/24 14:19, 4F
→
01/27 22:12, , 5F
01/27 22:12, 5F
→
01/29 08:58, , 6F
01/29 08:58, 6F
→
01/29 08:59, , 7F
01/29 08:59, 7F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):
11
42
PHP 近期熱門文章
PTT數位生活區 即時熱門文章
0
16