2013-03-06 35 views
3

我正在查看代碼庫。這是其中之一。PHP的這兩行不同?

require_once(dirname(__FILE__) . '/a_script.php'); 

我考慮重寫它:

require_once('./a_script.php'); 

是代碼有什麼不同那兩行呢?

+3

你也應該考慮寫它作爲'require_once __DIR__。 '/a_script.php';'。圍繞'require' /'include'參數的括號不鼓勵 – Phil 2013-03-06 03:38:38

+0

由於什麼原因而不鼓勵? – 2013-03-06 03:54:35

+1

@LincolnB「注意:include_once和require_once是語句,而不是函數,圓括號不應包圍主題文件名。」 – 2013-03-06 03:55:50

回答

5

是的,它們是不同的。第二個是相對於工作目錄而言的,它並不總是與當前正在執行的文件所在的目錄相同。

對於大多數情況,工作目錄是原始文件的目錄。如果在另一個文件包含的文件中運行require_once,則該路徑與第一個文件相關。

4

他們有一些不同

// '/dir/index.php' 
require_once(dirname(__FILE__) . '/script.php'); // '/dir/script.php' 
require_once('./script.php'); // '/dir/script.php' 

chdir('/') 
require_once(dirname(__FILE__) . '/script.php'); // '/dir/script.php' 
require_once('./script.php'); // '/script.php' 
+0

很好地說明了! – Phil 2013-03-06 04:21:07