Я только что начал использовать массивы 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
) но я не уверен, вызовет ли это меня проблемы в будущем. Какие-либо предложения?
Между регистром верблюда и подчеркивает его личный вкус . Я бы порекомендовал использовать любое соглашение, которое вы используете для обычных имен переменных, чтобы вы не думали: «Это было подчеркивание или верблюжий регистр ...?» и ваш преемник не оставлен думать обо всех способах, которыми они могли бы мучить вас за смешение стилей. Выберите один и придерживайтесь его по всем направлениям.
Вот почему дефисы - это очень плохая идея. Кроме того, изредка вы захотите использовать что-то вроде extract
, который принимает массив и преобразует его члены в обычные переменные:
$array = array("hello" => "hi", "what-up" => "yup");
extract($array);
echo $hello; // hi
echo $what-up; // FAIL
Лично я предпочитаю случай верблюда, потому что в нем меньше символов.
Я вообще удивлен, что никто этого еще не сказал. Я считаю, что на самом деле очень плохо, что все поднимают стандарты именования переменных, когда мы говорим о ключах массива, а не о переменных.
С функциональной точки зрения у вас не возникнет проблем с использованием дефисов, подчеркиваний и верблюжьих букв в ключах массива. Вы даже можете использовать пробелы, новые строки или нулевые байты, если хотите! Это не повлияет на функциональность вашего кода ^.
Ключи массива - это либо int
, либо строка
. Когда вы используете строку
в качестве ключа, она обрабатывается как любая другая строка
в вашем коде.
При этом, если вы строите стандартизированную структуру данных, вам лучше использовать тот же стандарт, который вы используете для имен переменных.
^ Если вы не планируете приводить тип к (stdClass)
или использовать extract ()
, в этом случае вам следует использовать ключи, которые преобразуются в допустимые имена переменных, чтобы избежать используя -> {"My Key Is"}
вместо -> myKeyIs
.В этом случае убедитесь, что ваши ключи соответствуют [a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff] *
.
Вы можете использовать то, что вам кажется наиболее удобным, однако я бы не рекомендовал использовать дефисы.
Обычным подходом является использование camelCase, и именно этого требуют многие стандарты в фреймворках.
Я рекомендую использовать это.
$thisIsMyVariable
$this-is-not-how-i-would-do-it
Кроме того, вы можете обнаружить, что использование дефисов может сделать ваши переменные похожими на вычитание. Поэтому вы должны использовать
$object->{”Property-Here”}
. Это просто нехорошо. : (
Edit, извините, я только что увидел, что вы спросили о вопросе в массиве, а не о переменных. В любом случае, мой ответ все еще применим.
При взгляде на ваш код: Возможно, вы даже сможете избежать некоторой работы с массивами и ключами, если с самого начала будете использовать что-то вроде gettext
http://de2.php.net/manual/en/intro.gettext.php для своих усилий по интернационализации.
В итоге получится
<h2><?php _("About me..."); ?></h2>
или
<?php
$foo = _("About me...");
...
?>
Многие люди, включая Zend, советуют программистам использовать верблюжий регистр, но лично я использовал подчеркивания в качестве разделителей слов для имен переменных, ключей массива, имен классов и имен функций. Кроме того, все строчные буквы, за исключением имен классов, где I будет использовать заглавные буквы.
Например:
class News
{
private $title;
private $summary;
private $content;
function get_title()
{
return $this->title;
}
}
$news = new News;
Я бы объединил все в одно слово. Если не складывать все вместе, я бы либо сократил их, либо использовал _
.
В конечном итоге, что бы вы ни решили выбрать, просто будьте последовательны.
Первый результат в Google для "стандартов кода php" гласит:
Но вы можете делать все, что захотите, если у вас еще нет стандартов, которым нужно следовать. Просто будьте последовательны в том, что делаете.