PHP StdClass - доступ к полям как -> поле или -> {'поле'} - PullRequest
14 голосов
/ 18 апреля 2011

Я работаю над этой совместной работой над кодом PHP, и кажется, что некоторые люди получают доступ к таким полям PHP StdClass, как это

$body->head

и другие подобные

$body->{'head'}

Насколько я могу судить, это эквивалентно. Они? Имеет ли значение то, что используется? Какой путь вы бы предпочли? Любые причуды, чтобы высматривать здесь?

Ответы [ 2 ]

21 голосов
/ 18 апреля 2011

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

$data->{'what * the ! thing'}

Это иногда случается, если вы преобразуете чистые массивы данных в объекты.версия, которая имеет немного больше смысла, когда вам действительно нужны имена атрибутов переменных (в основном переменные переменные для объектов):

$data->{"attr$index"}
2 голосов
/ 17 февраля 2012

Мне нужно создать класс с ненормальными именами свойств, такими как {'field-name'}.

class myclass
{
    public {'field-name-with-minus-sign'} = "something";
}

Идентификатор не работает.Зачем?Я не хочу использовать что-то вроде этого:

$myclass = new stdClass();
$myclass->{'dumb-property-name'}

, потому что у меня много таких свойств.

...