2012-03-02 81 views
3

根據我的理解,使用諸如require_once之類的東西,基本上會將代碼從一個文件複製並粘貼到另一個文件中,就像它原來位於第一個文件中一樣。 意義,如果我是做這樣的事情,將是有效的在方法中使用require_once

foo.php

<?php 
require_once("bar.php"); 
?> 

bar.php

<?php 
print "Hello World!" 
?> 

運行php foo.php只會輸出現在"Hello World!"

我問題是,如果我在一個方法中包含require_once,那麼包含的文件會在s cript是否被加載,或者只有在調用方法時? 如果僅在調用方法時纔有明智的性能優勢。或者,如果我將所有代碼保存到一個大文件中,情況會如何。

我主要問的是我創建了一個處理大量調用的API文件,我不想簡化文件。 (我知道我能做到這一點只可創建單獨的類,但我認爲這將是很好的瞭解)

(很抱歉,如果這已經被問,我不知道該怎麼尋找)

回答

1

1)僅在調用該方法時。

2)我會想象有一個動態加載的無形收益,所以PHP解釋器不必解析額外的代碼,如果它沒有被使用。

+0

回覆:2,這是一個內存VS性能問題(特別是在使用操作碼緩存時) 。加載代碼按需savs內存,但需要更多處理並且更難以緩存。 – Mchl 2012-03-02 23:03:48

+0

謝謝,這就是我需要知道的。我沒有想過緩存如何工作。謝謝。 – 2012-03-03 13:05:39

2

它只會包括調用方法時,但你看看autoloading

0

我通常使用include('bar.php');我使用它當我使用databvase信息時,我有一個名爲database.php的文件與登錄信息,當文件加載它調用它的權利。我不需要調用這個函數。它可能不是最有效和最有效的,但它對我有用。你也可以使用include_once ... include基本上做你想要的,它複製代碼essencially ..

0

正如其他人所提到的,是的,它包括準時制。

但是,注意變量定義(require()從一個方法中只允許訪問該方法範圍內的局部變量)。

請記住,您也可以從包含的文件與返回值(即字符串),以及緩衝輸出ob_start()