2013-02-23 139 views
0

我正在寫一個包含10個類的應用程序來完成不同的主題。我有2個選項來實例化它們。
1-有一個文件(或基類)來實例化它們全部。通過這種方式,我確信我實例化了所有類,並且可以在任何地方使用它們。通過這種方式,我可以使用__outoload()而不是包含文件。PHP中的實例化類OOP

2-分別在每個文件中實例化需要的類。絕對以這種方式,我需要包含不同的文件。

哪種方法比較好?爲什麼?

+1

我不明白的問題。對象實例化如何影響代碼保存在磁盤上的位置?這是關於自動加載還是顯式包含的問題? – erisco 2013-02-23 11:57:40

+3

您可能需要查看「實例化」實際上意味着什麼,並將您的問題更改爲更有意義。 – Niko 2013-02-23 11:58:55

+0

@Niko,你爲什麼覺得我不知道實例化是什麼意思? 我需要知道如何才能獲得最佳性能。 – 2013-02-23 12:07:58

回答

2

這取決於各種因素,例如您的網站的負載量。如果您的網站使用量很大,則不需要加載大量不必要的對象。關於在哪裏實例化PHP對象有不同的看法,但根據我的經驗,最好是include()(或require()或其他)文件,然後在其類文件中實例化其對象。所以我會include('class_A.php');,然後在class_A.php裏我會$object = new Object()'。作爲一個瑣事的隨機位,請注意_once()函數(include_once()require_once())的成本明顯高於普通版本。

0

使用解決方案2,每個類一個文件,並使用php autoload

0

Factory Pattern是您的選擇。

您有一個主類(工廠),其知道如何實例化類

+0

我認爲工廠對於那些通過PHP自身處理的東西來說是一個骯髒的解決方案。 – MarcinWolny 2013-02-23 12:00:15

+0

在需要在其他類中構建實例以防止緊耦合的情況下,工廠模式完全合法。 @MarcinWolny – PeeHaa 2013-02-23 14:09:32

0

它總是最好讓它們在不同的文件中的每一個。它使代碼更清晰1000倍。

對於加載PHP文件,你不是使用__autoload(正如你看到的:PHP甚至包含了這種情況的原生支持)