2011-05-29 33 views
1

我在我的項目中有一個特定的類,用於加載並保存所有其他類似庫和模塊。如何在擴展它的同時獲得單例PHP類的實例?

例如;

index.php 
--------- 
require_once "Libs/Damn.php"; 
$damn = Damn::getInstance(); 

// Initialize the URI class for handling user's request. 
$damn->load('URI'); 
$damn->load('Modules'); 
$damn->load('Views'); 

if($damn->URI->module){ 
    $damn->Modules->load($damn->URI->module); 
} else { 
    $damn->Modules->load('main'); 
} 

它只是加載3庫,並尋找URL中的模塊名稱。如果找不到,它將加載名爲「main」(main.php)的模塊。

這是問題;

當我在main.php中擴展Damn類時,我無法訪問加載的庫,如URI,模塊,但我想。看來延長單身人士課程並沒有得到班級的實例,只是複製它。

我想能夠使用像這樣的模塊類;

main.php 
-------- 
<?php 
if (!defined('SECURED')) die('Access denied.'); 

class Main extends Damn { 

    public function __construct() {} 

    public function index() { 
     $this->Views->load('test'); //Views library already loaded when Damn initiated. 
    } 

    public function __destruct() {} 

} 

?> 

回答

0

你其實不會延長該死的。你創造一個從Damn延伸出來的新類。您的原始類不受影響,並且單例實例中的數據不會奇蹟般地複製到新類中。

這裏最好的(好吧,'好')解決方案並不是擴展Main從Damn,而是創建一個新的Main類,使用 Damn來管理模型。

根據單例的早期實例的屬性更改單例實例的類型是不合邏輯的。這聞起來像不好的設計:)