我想停止PHP中類「OzoneRequest」和「OzoneResponse」的用戶創建對象。在OzoneApplication的構造函數中只創建一個對象。我該怎麼做?可能是你明白我的問題我們如何停止PHP中類的用戶創建對象?
我沒有用戶希望對象的創建只有我創建了一個對象存在的對象。如果用戶要創建的對象,那麼這將無法執行......這會給出一個錯誤......
我想停止PHP中類「OzoneRequest」和「OzoneResponse」的用戶創建對象。在OzoneApplication的構造函數中只創建一個對象。我該怎麼做?可能是你明白我的問題我們如何停止PHP中類的用戶創建對象?
我沒有用戶希望對象的創建只有我創建了一個對象存在的對象。如果用戶要創建的對象,那麼這將無法執行......這會給出一個錯誤......
做一個私有構造函數,然後從類中的一個靜態方法調用它來創建你的一個對象。另外,查詢單身人士的設計模式。
這將是一個Singleton的用例。
但是,我沒有看到限制用戶(閱讀:開發人員)的要點,如果他不想創建請求或響應對象。即使概念上只有一個請求對象(這是有爭議的;如果我需要針對遠程服務分派多個請求會怎麼樣),問題是:爲什麼你禁止開發人員更改你的代碼?我是一個成年人。如果我想打破你的代碼,讓我打破它。
還要注意的是,時下Singleton pattern is widely regarded an Anti-Pattern。
class OzoneRequest
{
private static $instance = null;
private function __construct() { }
private function __clone() { }
public static function getInstance()
{
if (!isset(self::$instance)) {
self::$instance = new OzoneRequest();
}
return self::$instance;
}
}
class OzoneApplication
{
protected $req;
public function __construct()
{
$this->req = OzoneRequest::getInstance();
}
}
由於這在技術上是一個正確的解決方案,所以我會加倍努力。道德上它是一個不同的故事;) – Gordon 2010-08-20 16:57:04
我嘗試開發一個MVC框架我大學的專業項目,我稱其爲OZONE_MVC(http://code.google.com/p/ozonemvc/),在此當請求來自客戶端,然後框架本身創建了一個可能必須是唯一的請求和響應對象。用戶僅使用該對象。它在初始階段..... – user421336 2010-08-20 16:46:44
@user爲什麼他們必須是唯一的?您如何期待*用戶*創建第二個請求或響應?我的意思是,*用戶*無法訪問您的代碼。 – Gordon 2010-08-20 16:51:05