2012-08-25 30 views
1

我碰到它用下面的代碼一個WordPress主題傳來:使用並作爲條件

is_file and include 'file.php'; 

我從來沒有見過這之前讓我很是困惑。它在我看的特定WordPress主題中工作正常。但是,如果我只是把該行的代碼,並自行它包含的文件,但也給了我通知如下運行它:

Notice: Use of undefined constant is_file - assumed 'is_file' in (the file path) on line 3 

但是,如果我這樣做:

is_file('file.php') and include 'file.php'; 

它工作正常。

問題1:爲什麼這項工作和我在哪裏可以閱讀更多關於使用「和」作爲條件?

問題2:編碼練習不好嗎?它慢嗎?有風險嗎?等等

問題3:爲什麼它在wordpress主題中工作,但不是自己的? (是的,我使用相同的PHP設置)。

+0

你是什麼意思「不靠自己?」 –

+0

在wp主題之外。在它自己的文件中。就是這一行代碼。 – John

+0

也許是因爲找不到file.php? –

回答

0

and首先檢查左操作數,如果它是假,則不需要檢查右操作數。

我記得在某處讀過它。讓我看看我能否找到鏈接。

+0

是的,的確如此。但奇怪的是,它沒有給它任何參數。 – John

+0

它不起作用。這是PHP「繼續不惜一切代價工作」的症狀。 – Femaref

1

在這種情況下,and的意思是「如果陳述是真實的,那麼做」。所以你的WordPress的代碼是不正確的:

is_file and include 'file.php' 

由於常量應該是大寫。即使它們在這種情況下意味着不變,也沒有意義。

is_file('my_file') and include 'my_file.php' 

是正確的方法。

用同樣的方法,你可以使用or: 「如果要是假的說法,這樣做」,像

$payed or my_redirect_function('pay.php'); //go to payment page 
+0

好的。我覺得它真的很奇怪,它包含的文件沒有錯誤。 – John

+0

這是可能的。 PHP假定一個常量,因爲is_file本身不是什麼。它假設恆定的IS_FILE,也許那個被設置爲TRUE。 – Peter

1
is_file('file.php') and include 'file.php'; 

它的作品,因爲​​返回TRUE

is_file and include 'file.php'; 

它做不工作,因爲is_file什麼都不返回。

+0

這是不正確的。 'is_file'(字符串)是真的 –

1

的和指導可以像函數

function and($a, $b) 
{ 
    if($a) return $b; 
    else return $a; 
} 

擁有國內唯一一個例外處理。當你傳遞一個表達式作爲第二個參數時,它甚至不會執行,當$ a爲false時。這是內置的語言優化,保證這種方式。 通過這種方式,您可以編寫一系列表達式,只有當前一個表達式爲false時纔會執行。 這是非常經常使用的功能,不僅在PHP中,它不被認爲是不好的做法。

同樣的事情大約是$ a或$ B:

function or($a, $b) 
{ 
    if($a) return $a; 
    else return $b; 
} 

可悲的是不知道很多關於WordPress。