對於某些人來說,這個問題可能很明顯,但我剛開始用Web應用程序(特別是PHP)開始抓住多層體系結構的表面。我有一個包含多個對象的庫,它正在迅速擴展。我總是試圖從可重用性的角度思考問題,並將我的項目分解爲小的,可重用的和鬆散耦合的組件,這樣我不僅創建項目,而且還爲未來的項目創建部件。我試圖設計一種包管理系統,這樣我就可以停止在包含對象中使用絕對路徑。我想有一個文件包含我的庫中的每個類文件。隨着包含,我想添加一個「單身」模式的類,將允許我抓住庫中的每個對象的實例按需。我打算爲每個對象創建一個靜態獲取器,以返回對新實例的引用。基本上,這樣的事情...PHP OOP架構問題
include('classa.php');
include('classb.php');
include('classc.php');
class pacman{
private static $instance_stack;
public static function GetPackage($strPackage){
if(!self::$instance_stack){
self::$instance_stack['classa']=new ClassA();
self::$instance_stack['classb']=new ClassB();
self::$instance_stack['classc']=new ClassC();
}
if(array_key_exists(strtolower($strPackage),self::$instance_stack)){
return self::$instance_stack[strtolower($strPackage)];
}
else{
return false;
}
}
}
然後,如果我想獲得一流的...
include('pacman.php');
$ClassA = pacman::GetPackage('classa');
我意識到這是一個非常基本的實現。我的例子只涵蓋了最低限度。我的問題是沒有實現這一點;相反,這是一個問題,從包含的數百個未被證實的類是否會對性能產生顯着影響。如果是這樣,是否有人知道解決方法?我無法告訴你,要追蹤數百個按內容排序成董事的班級的相對路徑是多麼困難。
[在尤達的聲音]在你可以重用之前,你必須先使用。關注未來項目對目前項目線索失敗的需求。 – cleong
沒有先入爲主。爲什麼我會花2個小時創建一個項目特定的組件,當我可以採取2:30並創建一個通用的可重用組件。長期而短暫,它更有意義。我寧願在500個具有多態性的地方使用單個泛型函數,而不是通過代碼庫分散500個變體。你想談談噩夢 –