2012-03-30 78 views
0

我只是一個問題...我看到這種編碼風格在各種PHP腳本,不明白這是什麼意思...可以有人解釋我這^^我不明白這種編碼風格在PHP

示例代碼:

empty($config) OR $this->initialize($config); 

或本

$url AND $this->create($url); 
+0

哪裏是代碼的行??? – Baba 2012-03-30 07:46:11

+0

如果你直接訪問$ this-> initialize($ config),你可能會得到未定義的$ config變量錯誤。 – 2012-03-30 07:50:24

回答

1

這對OR運算符:如果第一個條件爲真,那麼PHP不會打擾到執行第二:知道1號是真實的足夠重新變成真的。

您可以做同樣的(除了它的過程相反:如果第一個條件爲假,PHP不會解釋第2)

empty($config) OR $this->initialize($config); 

是對

快捷方式
if (! empty($config)) { //(BTW I guess it should be if (empty($options)) no?) 
    $this->initialize($config); 
} 

而且

$url AND $this->create($url); 

if (! $url) { 
    $this->create($url); 
0

所有這些功能都在php.net很好的回答。例如,empty功能,和

看@haltabush的答案,我想我不明白你的問題。

1

這是PHP的短路方面,其中在OR,如果第一個說法是正確的,下一個將被忽略,併爲AND,如果第一個語句是假的,下一個會被忽略

http://php.net/manual/en/language.operators.logical.php

在你的情況,第一個說

如果$配置不爲空,然後初始化

第二個說

如果$ URL設置,然後調用當前對象

3

在創建方法是進行空/真/假支票和有條件地執行一些代碼的方式...總之,這只是if/then/else的簡短形式。

我不會堅持這種「短」的符號,因爲它模糊了真正的邏輯運算和程序控制流