2013-07-27 46 views
2

在javascript中,我可以將對象文字作爲參數傳遞給對象,如果值不存在,可以通過編碼以下內容來引用默認值;PHP或運算符類似於javascript?有一個簡單的方法嗎?

this.title = params.title || false; 

有沒有類似的方式來做到這一點與PHP?

我是新來的PHP,我似乎無法找到答案,如果沒有像JavaScript一樣的簡單解決方案,它似乎對我來說是純粹的瘋狂!

PHP中使用函數調用使用三元運算符的最佳方法是什麼?

isset($params['title']) ? $params['title'] : false; 

感謝

+0

**'三元'是最好的方法。**在PHP中沒有這樣的功能。這是另一個那些不自然的'JS'的東西... – CodeAngry

+0

@代碼「不自然」?真? – deceze

+0

@deceze是因爲'||'*(又名'OR')*應該是'bool'。 [像這樣](http://en.wikipedia.org/wiki/Logical_disjunction)。它是在'C/C++'中進行真正的編程。 – CodeAngry

回答

3

不要找一個完全等效,因爲PHP的布爾運算符和數組訪問機制實在是太不同來提供。你需要的是爲一個參數提供默認值

function foo(array $params) { 
    $params += array('title' => false, ...); 

    echo $params['title']; 
} 
+0

這是否不會覆蓋'title'的已設定值? – GriffLab

+0

不,它沒有,這是重點:http://php.net/manual/en/language.operators.array.php – deceze

+0

謝謝你,輝煌的答案:) – GriffLab

2

somethig這樣$title = (isset($title) && $title !== '') ? $title : false;

1

或者使用empty功能:

empty($params['title']) ? false : $params['title']; 
0

$ X =($ myvalue的== 99)? 「x是99」:「x不是99」;

PHP的,如果內膽...... 如果($ myvalue的== 99){x是99}其他{x不是99 //設置值爲false}這裏

0
<?php 
class MyObject { 
    // Default value of object property 
    public $_title = null; 
    // Default value of argument (constructor) 
    public function __construct($title = null){ 
     $this->_title = $title; 
    } 
    // Default value of argument (setter) 
    public function setTitle($title = null){ 
     // Always validate arguments if you're serious about what you're doing 
     if(!is_null($title) and !is_string($title)){ 
      trigger_error('$title should be a null or a string.', E_USER_WARNING); 
      return false; 
     } 
     $this->_title = $title; 
     return true; 
    } 
} // class MyObject; 
?> 

這是怎麼了你使用默認值做一個對象。3種方式1.您可以在類定義中默認屬性值。或者,您可以在__construct作業或特定設置器setTitle上進行默認設置。

但這一切都取決於您的其他代碼。您需要忘記JS才能正確使用PHP。這是一個稍微嚴格的編程環境,即使是非常鬆散的類型。我們有PHP的實際類,而不是假象函數類大象,它們不提供IDE代碼完成支持,如JS

+0

雖然我同意,但我認爲類從真正的編程延遲。真正的原型繼承是更清潔,高效,更真實的。當我們都知道一些類應該擴展另一個類時,原型繼承強制執行一個'有'關係,而不是擴展多個類並強制'是'關係的類,因爲它們沒有'有'關係。 – GriffLab

+0

@GriffLab **我認爲課程從真正的編程推遲** - *這使我的一天*。像一個真正的'C'編碼器一樣說話。你真的錯過了...'''''''''''''''''''程序'+''結構''再次變得完整。另外你有美麗的'析構函數',你可以在那裏清理東西,而不必在任何地方跟蹤它。在C++中,你也有模板類,它在代碼可重用性方面打擊了任何人的想法。我不是一個「把所有東西都變成瘋子」的人,但我知道類/對象的好處。 *我在150年前從C開始...... * – CodeAngry

相關問題