首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 設計模式實作:企業應用模式(一)註冊表、前端控制器、命令模式

     編輯:PHP 相關知識

PHP 設計模式實作:企業應用模式(一)

示範註冊表模式三種作用域(請求、會話、應用層)、前端控制器結合命令模式實現統一入口、應用程式助手載入設定檔等企業級架構基礎組件。

1. 註冊表模式

提供系統級物件全域存取點,採單例模式實作。

class Registry {
    private static $instance;
    private $request;
    private function __construct() {}
    static function instance() { /* 單例 */ }
    function getRequest() { return $this->request; }
    function setRequest(Request $r) { $this->request = $r; }
}

2. 三種作用域註冊表

  • RequestRegistry:陣列儲存,請求結束自動銷毀
  • SessionRegistry:資料存 $_SESSION[__CLASS__],跨請求持久
  • ApplicationRegistry:序列化存檔案(Data/ 目錄),支援快取失效偵測(檔案修改時間)

3. 前端控制器 + 命令模式

Controller::run() 為唯一入口:

  1. 初始化 ApplicationHelper 載入 XML 設定寫入 ApplicationRegistry
  2. 建立 Request 物件(支援 HTTP/CLI 參數)並存入 RequestRegistry
  3. CommandResolver 依 Request->cmd 解析對應 Command 子類別
  4. 執行 Command->execute(Request),內部再呼叫 doExecute() 與 disPlay() 載入視圖

4. 核心類別程式碼架構

// Command 抽象基類
abstract class Command {
    final function __construct() {}
    function execute(Request $request) { $this->doExecute($request); }
    abstract function doExecute(Request $request);
    function disPlay(Request $request) { /* 載入對應 View */ }
}

// CommandResolver 解析器
class CommandResolver {
    function getCommand(Request $request) {
        $cmd = $request->getProperty('cmd');
        // 載入對應 Command 類別檔,驗證繼承關係,回傳實例
    }
}

// ApplicationHelper 設定載入器
class ApplicationHelper {
    function init() {
        if (!ApplicationRegistry::getDSN()) $this->getOptions();
    }
    private function getOptions() {
        $xml = simplexml_load_file($this->config);
        ApplicationRegistry::setDSN([$xml->dsn->__toString()]);
    }
}

// 入口檔 index.php
Controller::run();

此架構展現「註冊表」統一資源存取、「前端控制器」集中請求分派、「命令模式」封裝業務邏輯與視圖選擇,為大型 PHP 專案提供清晰分層基礎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved