Я должен использовать Hypens, Подчеркивание или Camel-регистр в массивах php?

Я только что начал использовать массивы php (и php в целом)

У меня есть код как следующее:

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>

Я использую дефисы (about-h2) но я не уверен, вызовет ли это меня проблемы в будущем. Какие-либо предложения?

5
задан alexchenco 23 February 2010 в 14:03
поделиться

7 ответов

Между регистром верблюда и подчеркивает его личный вкус . Я бы порекомендовал использовать любое соглашение, которое вы используете для обычных имен переменных, чтобы вы не думали: «Это было подчеркивание или верблюжий регистр ...?» и ваш преемник не оставлен думать обо всех способах, которыми они могли бы мучить вас за смешение стилей. Выберите один и придерживайтесь его по всем направлениям.

Вот почему дефисы - это очень плохая идея. Кроме того, изредка вы захотите использовать что-то вроде extract , который принимает массив и преобразует его члены в обычные переменные:

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

Лично я предпочитаю случай верблюда, потому что в нем меньше символов.

19
ответ дан 18 December 2019 в 06:34
поделиться

Я вообще удивлен, что никто этого еще не сказал. Я считаю, что на самом деле очень плохо, что все поднимают стандарты именования переменных, когда мы говорим о ключах массива, а не о переменных.

С функциональной точки зрения у вас не возникнет проблем с использованием дефисов, подчеркиваний и верблюжьих букв в ключах массива. Вы даже можете использовать пробелы, новые строки или нулевые байты, если хотите! Это не повлияет на функциональность вашего кода ^.

Ключи массива - это либо int , либо строка . Когда вы используете строку в качестве ключа, она обрабатывается как любая другая строка в вашем коде.

При этом, если вы строите стандартизированную структуру данных, вам лучше использовать тот же стандарт, который вы используете для имен переменных.


^ Если вы не планируете приводить тип к (stdClass) или использовать extract () , в этом случае вам следует использовать ключи, которые преобразуются в допустимые имена переменных, чтобы избежать используя -> {"My Key Is"} вместо -> myKeyIs .В этом случае убедитесь, что ваши ключи соответствуют [a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff] * .

3
ответ дан 18 December 2019 в 06:34
поделиться

Вы можете использовать то, что вам кажется наиболее удобным, однако я бы не рекомендовал использовать дефисы.

Обычным подходом является использование camelCase, и именно этого требуют многие стандарты в фреймворках.

Я рекомендую использовать это.

 $thisIsMyVariable

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

Кроме того, вы можете обнаружить, что использование дефисов может сделать ваши переменные похожими на вычитание. Поэтому вы должны использовать

 $object->{”Property-Here”}

. Это просто нехорошо. : (

Edit, извините, я только что увидел, что вы спросили о вопросе в массиве, а не о переменных. В любом случае, мой ответ все еще применим.

1
ответ дан 18 December 2019 в 06:34
поделиться

При взгляде на ваш код: Возможно, вы даже сможете избежать некоторой работы с массивами и ключами, если с самого начала будете использовать что-то вроде gettext http://de2.php.net/manual/en/intro.gettext.php для своих усилий по интернационализации.

В итоге получится

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

или

<?php 
$foo = _("About me..."); 
 ...
?>
0
ответ дан 18 December 2019 в 06:34
поделиться

Многие люди, включая Zend, советуют программистам использовать верблюжий регистр, но лично я использовал подчеркивания в качестве разделителей слов для имен переменных, ключей массива, имен классов и имен функций. Кроме того, все строчные буквы, за исключением имен классов, где I будет использовать заглавные буквы.

Например:

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

    function get_title()
    {
        return $this->title;
    }
}
$news = new News;
0
ответ дан 18 December 2019 в 06:34
поделиться

Я бы объединил все в одно слово. Если не складывать все вместе, я бы либо сократил их, либо использовал _.

В конечном итоге, что бы вы ни решили выбрать, просто будьте последовательны.

1
ответ дан 18 December 2019 в 06:34
поделиться

Первый результат в Google для "стандартов кода php" гласит:

  • используйте '_' в качестве разделителя слов.
  • не используйте '-' в качестве разделителя слов

Но вы можете делать все, что захотите, если у вас еще нет стандартов, которым нужно следовать. Просто будьте последовательны в том, что делаете.

0
ответ дан 18 December 2019 в 06:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: