2010-02-23 104 views
5

我只是使用PHP陣列開始(和一般的PHP)我應該在PHP數組中使用Hypens,Underscore還是camelCase?

我有類似下面的代碼:

languages.php:

<?php 
$lang = array(
    "tagline" => "I build websites...", 
    "get-in-touch" => "Get in Touch!", 
    "about-h2" => "About me" 
    "about-hp" => "Hi! My name is..." 
); 
?> 

的index.php:

<div id="about"> 
    <h2><?php echo $lang['about-h2']; ?></h2> 
    <p><?php echo $lang['about-p']; ?></p> 
</div> 

我正在使用hypens(about-h2),但我不確定這是否會在將來導致我的問題。有什麼建議麼?

回答

17

之間駱駝情況,並強調這是個人的品味。我建議你使用任何約定你用於常規變量名稱,所以你是e不要留下「這是一個下劃線還是駱駝案例...?」,而且你的繼任者不會想到他可能會因混合風格而折磨你的所有方式。選擇一個並全程堅持下去。

這就是爲什麼連字符是一個非常糟糕的主意 - 也很少,你要使用類似extract這需要一個數組,其成員轉換成普通變量:

$array = array("hello" => "hi", "what-up" => "yup"); 
extract($array); 
echo $hello; // hi 
echo $what-up; // FAIL 

就個人而言,我更喜歡駱駝情況,因爲字符少。

1

你可以使用什麼感覺最compfortable,但是,我不會推薦使用hypehens。

常用的方法是使用camelCase,這就是框架中許多標準所要求的。

我推薦使用這個。

$thisIsMyVariable 

$this-is-not-how-i-would-do-it 

此外,你可以發現使用連字符可以使你的變量看起來像減法。所以你必須使用

$object->{」Property-Here」} 

它只是不好。 :(

編輯,對不起,我剛纔看到你被問到陣的問題,而不是變量。無論哪種方式,我的回答仍然適用。

1

我會追加全部納入一個字。如果沒有附加它一起,我要麼縮短或使用_

從長遠來看,無論你決定選擇僅僅是一致

0

在谷歌的first result爲 「PHP代碼標準」 說:

  • 使用 '_' 作爲每個詞的分界。
  • 不使用「 - 」作爲每個詞的分界

但是,你幾乎可以做任何你想要的,如果你還沒有標準可循。只要你做的一致。

3

我真的很驚訝沒有人說這個呢。我發現,當我們談論數組鍵時,每個人都會提出可變的命名標準,而不是變量,這實際上很糟糕。

從功能上看,你不會在你的數組鍵中使用連字符,下劃線,駝峯值。你甚至可以使用空格,換行或空字節!它不會影響你的代碼的功能^。

陣列密鑰是intstring。當您使用string作爲密鑰時,它將在您的代碼中被視爲其他任何string。這就是說,如果你正在建立一個標準化的數據結構,你最好使用與你的變量名稱相同的標準。


^除非你打算強制轉換爲(stdClass)或使用extract(),在這種情況下,你應該使用哪種轉換爲有效的變量名,以便鍵,以避免使用->{"My Key Is"}代替->myKeyIs。在這種情況下,請確保您的密鑰符合[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

0

查看您的代碼時:如果您從一開始就使用類似gettexthttp://de2.php.net/manual/en/intro.gettext.php的國際化工作,可能甚至可以避免使用數組和鍵。

這將最終導致

<h2><?php _("About me..."); ?></h2> 

<?php 
$foo = _("About me..."); 
... 
?> 
+0

我想使用gettext。但是它在我使用的免費共享主機中無效:http://www.zymic.com/。 – alexchenco 2010-02-23 14:32:23

0

許多人,包括Zend的,告訴程序員使用駱駝,但我個人用下劃線作爲單詞分隔變量名,數組鍵,類名和函數名稱。此外,所有小寫,除了類名稱,其中我使用大寫。

例如:

class News 
{ 
    private $title; 
    private $summary; 
    private $content; 

    function get_title() 
    { 
     return $this->title; 
    } 
} 
$news = new News; 
相關問題