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

PHP 設計模式:工廠、單例、註冊樹模式實作基礎框架

     編輯:PHP 相關知識

PHP 設計模式:工廠、單例、註冊樹模式實作基礎框架

命名空間

PHP 5.3+ 隔離類別與函式,避免命名衝突。

namespace Test5; function test() { echo __FILE__; }
namespace Test6; function test() { echo __FILE__; }
// 呼叫
Test5\test(); Test6\test();

類別自動載入

spl_autoload_register('autoload1');
function autoload1($class) { require __DIR__.'/'.$class.'.php'; }

PSR-0 規範

  • 命名空間對應絕對路徑
  • 類別名首字母大寫
  • 除入口檔,每檔只有一個類別

PHP 鏈式操作

class Database {
    function where($where) { return $this; }
    function order($order) { return $this; }
    function limit($limit) { return $this; }
}
$db = new Database();
$db->where('id=1')->order('id')->limit(1);

魔術方法應用

  • __get/__set:攔截不可見屬性存取
  • __call/__callStatic:攔截不可見方法呼叫
  • __toString:物件轉字串
  • __invoke:物件當函式呼叫

三種基礎設計模式

1. 工廠模式

class Factory {
    static function createDatabase() { return new Database(); }
}
$db = Factory::createDatabase();

2. 單例模式

class Database {
    protected static $db;
    private function __construct() {}
    static function getInstance() {
        if (self::$db) return self::$db;
        self::$db = new self(); return self::$db;
    }
}
$db = Database::getInstance();

3. 註冊樹模式

class Register {
    protected static $objects;
    static function set($alias, $object) { self::$objects[$alias] = $object; }
    static function get($name) { return self::$objects[$name]; }
}
Register::set('db1', $db);
$db = Register::get('db1');

註冊樹解決全域共享與物件交換,任何地方可直接存取。

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