2012-05-30 45 views
2

我正在學習PHP,並且我喜歡學習以常規/更好風格的方式編寫事物,並且我搜索了,但我無法找到任何關於此主題的具體問題(或者更可能是我無法找到正確的關鍵字找到它們)。哪個更適合PHP /更傳統的風格?

我編程的第一種語言是Java,而且顯然你使用的方法是instance.method();。我不確定在PHP中,我應該堅持使用Java,在方法調用中沒有空格(例如PHP中的$this->displayTitle();),或者我應該將其分開,這對我來說很陌生,但我估計看起來更好($this -> displayTitle();) 。

其次,我覺得你可以使用串聯或純內嵌插入來顯示字符串中的變量。但是,哪種風格更好?我更喜歡所有內聯,因爲它似乎流動更好,沒有突然停止,但同樣,我喜歡使用任何常規/最好的。 (爲了更清楚我在說echo "<title>$var</title>";echo "<title>".$this->title."</title>";相比。)

非常感謝!

+0

完全取決於你的個人風格和/或情況。選擇一個編碼標準並堅持下去。例如:http://framework.zend.com/manual/en/coding-standard.html。 – deceze

+0

使用字符串時需要考慮的另一個重要問題是[單引號對雙引號](http://php.net/manual/en/language.types.string.php) – Scuzzy

回答

1

取決於你。當然,我在大部分地方都看過$this->displayTitle();。我個人喜歡Zend Framework編碼風格,這是我的第一個編程經驗。

而雙字符串的目的是能夠「評估」這些雙引號內的內容。由於字符串的所有前綴元素都將被複制到新字符串中,因此使用串聯會稍微慢一些。

http://framework.zend.com/manual/en/coding-standard.coding-style.html

2

,因爲它是促進討論,​​因爲沒有真正答案我檢舉了這一點。然而,這是多麼我的代碼,因爲它是很有道理的對我說:

$vars = array(
    1 => a, 
    2 => b, 
    3 => c 
); 

foreach ($vars as $var) { 

    echo '<p>'.$var.'</p>'; 

} 

爲了說明你的類/對象的例子我用$object->var

我個人不喜歡上新的生產線開{,始終使用{}if即使它是一條線的等,從來沒有使用if ($clause) : do something; endif;模型。

如果你從Java未來你可能要考慮關掉「模糊變量」類型,允許$var = 3評估爲trueintstring甚至double如果我沒有記錯的話。然而,我很懶,所以我喜歡它可以做到這一切,但我被抓了幾次。

從本質上講,它歸結爲你覺得最好的。但是,如果你正在尋找一個指導你的基礎特定風格關閉總有Wordpress Coding Standards

+0

感謝您的幫助,這真的把它解決了。 :) –

1

你也可以呼應時,這實際上是更快地根據phpbench echo "<title>", $this->title, "</title>";

2

有沒有唯一的答案用逗號這個問題。

有一些通常與特定項目相關的建議。在一個更大的項目中,重要的是你要保持與該項目的編碼風格一致。Wordpress, Drupal, Joomla, Symfony,CodeIgniter,Zend Framework等都提出了建議,沒有兩個是相同的。

作爲程序員,您有責任適應您所涉及的項目。並且從你看到的每個「標準」中採取你喜歡和贊同的內容,並且建立你自己的個人編碼風格,你可以提倡和捍衛。這幾乎是我們所做的。

MY偏好包括一些以下操作:

對象:

$foo->barBaz(); 

間距:

if (condition) { 
    statement; 
} else { 
    statement; 
} 

輸出:(我從來沒有使用回波)

printf("Intro: %s (%.2f)\n", $somestring, $somefloat); 

YMMV。

1

我從來沒有見過任何人用空格編寫方法調用。我會堅持$this->method()

對於字符串,我不認爲有一個公認的約定。我個人不喜歡變擴建太多,所以我一般用單引號的字符串(其中變量將不會擴展),並且:

  1. 連接具有.
  2. 插入值使用的格式化字符串sprintf()
  3. 建立一個字符串數組,然後用implode()

這真的取決於哪一個更好的局面立刻將它們連接所有。如果您從許多短的字符串構建長字符串,最好使用implode而不是許多.操作。如果你正在建造類似圖案的表格,sprintf非常方便。

另一種有用的尖端,具體地約echo是,存在之間的差:

echo $string1 . $string2 . $string3; 

echo $string1, $string2, $string3; 

當使用,每個串呼應一個接一個。如果您使用.所有字符串必須先連接在一起,然後結果被回顯。所以使用,更好,因爲它避免了這些額外的級聯操作。

0

我會做這樣的事情,如果你的代碼涉及到HTML呼應大塊

<hmlt> 
.... 
<title><?php echo $var;?></title> 
.... 
.... 
.... 
</html> 

你可以只終止你的PHP代碼?>,而不是把大量的內部變量文本逃進HTML,其這會混淆,因爲單引號或雙qoutes的使用的,(當然這只是我的偏好)

<?php 
echo "<div html taggs here><div><div>".$variable_here."</div><div>".$another_variable_here."</div></div></div>"; 
?> 

VS

<div> 
    <div> 
     <div> 
     <?php echo $variable_here; ?> 
     </div> 
     <div> 
     <?php echo $another_variable_here;?> 
     </div> 
    </div> 
</div> 

您認爲哪些文件更容易閱讀?