2010-01-21 72 views
9

如果我有大量函數,最好將它們全部保存在一個大文件中,還是將它們分成幾個相關函數文件會更好。更好的意思是更高效的可維護性和服務器處理請求。包含函數文件的效率(以PHP爲單位)

例如,現在我將所有文件都放在名爲include.php的文件中。但是,包含如下文件的包含文件會更明智嗎?

<?php 
include('/functions/user.php'); 
include('/functions/admin.php'); 
include('/functions/content.php'); 
include('/functions/nav.php'); 
include('/functions/database.php'); 
include('/functions/other_junk.php'); 
?> 

回答

17

爲了維護起見,一定要將它們分開。我懷疑性能會受到影響,但即使它(只是一點點),你最好寫出可維護,可讀的代碼。

+2

+1在PHP中傳播可維護性和可讀性。 – whiskeysierra 2010-01-21 04:04:09

+0

-1,在一個文件中具有所有功能並不意味着它不可維護,不可讀。這取決於你如何做**。事實上,即使有多個包含,仍然很可能無法維護並且無法讀取。 – Pacerier 2014-10-16 20:42:50

2

在可維護性方面,通常最好將您的功能分爲相關組。 (就像你上面顯示的那樣,user.php將只是用戶相關的功能)。

如果您知道每次需要包含任何文件時都需要所有包含的文件,則應該只有一個包含所有這些文件的文件。 否則,它會破壞擁有「全部」文件的目的。

2

根據我的經驗,多個包含和/或要求通常不會希望將您設置得太多,前提是您要爲函數庫談論幾十個文件。特別是如果您可以設法在請求生命週期中僅調用一次特定文件的語句。

從哪裏開始顯示性能點擊是,如果您進入OOP或高度複雜的功能/程序類型體系結構,其中可能有數百個不同的類/文件。但通常在這一點上,你有希望通過緩存/編譯完成某種緩解。

+0

事實上,如果你沒有加速器,它會感覺很慢。磁盤讀取仍然很昂貴。 – Pacerier 2014-10-16 20:46:19

3

您想確保您使用的是XCache或APC之類的PHP緩存。你的PHP文件應該全部放在內存中,你不應該擔心你的包含命中磁盤。

我一定會覺得它更容易,如果你分心像功能/類到他們自己的文件。

+4

除非另有特別配置,否則XCache和APC將檢查文件修改時間以確定它們是否應處理新版本的文件。如果包含大量內容,這會影響性能。 在代碼已修復的生產服務器上,您應該真正關閉此功能。當你上傳一個新版本的代碼時,你不得不手動刷新緩存,這樣你的性能就會提高很多。 – Mike 2010-01-21 04:09:43

0

我有一個包含在一箇中央.config文件中的列表。

對於所有的OOP類,雖然我使用自動加載 - >我知道它稍微慢一點,但是它省去了包含它們,因爲我創建了一個新類。而且它們只按需要加載。

另外,include比include_once快,因爲它不必檢查文件是否已經包含。