2011-02-10 70 views
19

網絡上有大量的兩個例子。 php手冊說「include()語句[...]」,這似乎是矛盾的 - 如果它是一個聲明不應該沒有括號?是php的'include'函數還是語句?

這兩項工作:

include('somefile.php'); 
include 'somefile.php; 

這樣,我或其他人照顧?

+3

不,一個人永遠要關心沒有一定道理的。 – 2011-02-10 10:17:29

回答

28

從手動(我的重點)報價

因爲包括()是一個特殊的語言構造,圓括號是而不是需要圍繞它的論點。

這些也被稱爲「特殊形式」,包括諸如echoreturn陳述之類的東西。請注意,雖然這些都不是功能,但仍然可以談論表達式和語句,不同之處在於前者具有價值,而後者則不具備價值。由於includeinclude_oncerequirerequire_once都返回一個值(如果包含成功,則返回TRUE),則可以在表達式中使用它們。通過這個推理,「包含聲明」將是不正確的,儘管include幾乎總是用作語句。

+1

+1爲「語言結構」 – igorw 2011-02-10 10:16:45

1

parens中的單值會根據值本身進行評估,所以parens本身並不重要。只有一個參數

-1

語句,可以有也插入語如:

echo ('hello world'); 
9

包括一個聲明: 按照例如

// won't work, evaluated as include(('vars.php') == 'OK'), i.e. include('') 
if (include('vars.php') == 'OK') { 
    echo 'OK'; 
} 

// works 
if ((include 'vars.php') == 'OK') { 
    echo 'OK'; 
} 
+0

+1爲負的例子 – PeerBr 2014-10-10 20:08:37

1

兩種解釋。在PHP文檔的許多領域中,所有內容都被稱爲語句。示例(來自控制結構) - 「語句可以是賦值,函數調用,循環,條件語句或甚至不執行任何操作的語句(空語句)。」

語句和函數之間的區別是個別語言的語義問題。因此,PHP維護者可以明確定義它,或者讓它保持不明確。

1

includerequireechoprint和其它關鍵字一小撮都是靠自己的語言結構,而不是函數調用,並且不需要括號。但是,有些人喜歡假裝他們是函數調用,無論如何都使用括號。它們是相同的。

-1

我相信唯一的區別就是你想要做的。

例如,這兩個

echo 'Hello World'; 
echo ('Hello World'); 

...兩個打印的Hello World

這正是你想做的事,你覺得最舒服的,如果你像我一樣,你想使你的腳本看起來很漂亮:d

5

的括號裏的一個函數的參數。 與include你可以使用它作爲一個函數或在php語句。

因爲include()是一種特殊的語言結構,所以括號不是圍繞其參數所需的 。

文檔瀏覽:http://php.net/manual/en/function.include.php

隨着echo相同的概念,從PHP手冊here

回聲實際上不是一個函數引用(這是一個語言結構),所以你 不要求使用圓括號。回聲(與其他一些 語言結構不同)不會像函數那樣工作,因此它總是不能在函數的上下文中使用。

0

回聲總是用回聲 「測試」

<?php 
// this will give you error 
echo ("test","test"); 

//that will work fine 
echo "test","test"; 
?> 
相關問題