2011-11-17 38 views
0

我不是PHP專家。我試圖增加include()的使用,使我的網站代碼儘可能乾淨,而不僅僅是複製,例如所有頁面中的標題代碼。我有兩個問題使用Include()或嵌套的include()有什麼缺點嗎?

1。在服務器請求,速度等方面使用include()很好嗎?

的index.php

(一串代碼)

<? include("connect.php") ?>; 

(一串代碼)

<? include("header.php") ?>; 

(一串代碼)

<? include("footer.php") ?>; 

2。也可以使用嵌套的include()嗎?例如:

的header.php (一些代碼)

<? include("searchFormInput.php") ?>; 

現在的index.php將包括的header.php,然後將header.php文件包括searchFormInput.php以及 是這一優良?

非常感謝

+0

謝謝你的回答。我現在知道我應該如何使用它,缺點是什麼以及要避免什麼。再次感謝:) –

回答

2

是,包括一個常見的做法

是的,包括給你輕微的性能損失(非常小)。

包括給你可讀性增益,並感謝它會更容易採用DRY規則。請記住以下幾點:

  • 如果文件中包含一些代碼,應該只執行一次(一些設置,類定義,函數定義等),使用include_once()(它不會有任何影響,如果在再次調用相同的文件名),

  • 如果該文件包含了一些代碼,執行多次(例如,一些模板的形式),使用簡單的include()

  • 如果需要的東西爲你的應用程序工作(如一些安全碼,一些設置等),請使用require()代替include()require_once()代替include_once() - 如果該文件不會被發現,PHP將拋出致命錯誤,將停止執行腳本,

2

原則缺點嵌套包括的是,你有可能碰到的情況時,交叉依賴導致文件被包含不止一次。儘管如此,使用include_once()很容易解決這個問題。

但在您的示例中,使用header.php(包括searchFormInput.php),假設這些文件主要生成HTML輸出而不是解析類和依賴項,則可能不會出現問題。

在另一方面,如果你有一個像

connect.php includes config.php 
session.php includes config.php 

一些結構,你將需要使用include_once('config.php')

+0

除了這個答案,我認爲如果你正在處理一個大型項目,使用一個框架(codeIgniter,CakePHP)將是一個好主意。 –

1

包括,要求將其中讀取文件和執行代碼。

我對速度做了一些測試,包括和的file_get_contents 結果是包括和要求是比較

所以我的建議不提高夾雜的數量緩慢。

1

我想你應該看看autoload用PHP一次。你不需要關心包含每個文件和每個文件。只需調整您的自動加載,這將照顧所有這些。你需要用這個來做面向對象編程。

1

它的優良,在性能方面,它保持了代碼在一定程度上清潔和可重用。不過,我建議您使用這種代碼包含的模板,將所有信息加載到變量中,然後在模板中調用它們。考慮一個模板引擎http://www.smarty.net/或者可能是一個PHP框架或CMS http://drupal.org/這應該讓你的生活在短期和長期更容易!

相關問題