Синтаксис фигурного скопирования PHP для переменной-члена
Первый вопрос о SO и это настоящий RTM-кандидат. Но я обещаю, что я посмотрел и не могу найти его. Я с удовольствием сделаю #headpalm, когда окажется, что я пропустил простую вещь.
Попытка выяснить Zend Framework и наткнулась на следующий синтаксис:
$this->_session->{'user_id'}
Я никогда не видел синтаксис фигурных фигурных скобок, используемый для доступа к тому, что, как представляется, является переменной-членом. Как это отличается от
$this->_session->user_id
Я предполагаю, что _session не имеет значения, но включает его в вопрос, поскольку он может и не быть.
Являются ли фигурные скобки просто соглашением о чистоте, которое пытается обернуть составную переменную имя user_id? Или это какой-то специальный аксессор?
Любые указатели на TFM, чтобы я мог R up, был бы смиренно оценен.
Большое спасибо. Будьте осторожны.
Ответы
Ответ 1
Curly фигурные скобки используются для явного указания конца имени переменной. Например:
echo "This square is {$square->width}00 centimeters broad.";
Итак, ваше дело действительно представляет собой комбинацию из двух особых случаев. Вы можете получить доступ к переменным класса, используя фигурные скобки и так:
$class->{'variable_name'} // Same as $class->variable_name
$class->{'variable' . '_name'} // Dynamic values are also allowed
И в вашем случае вы просто окружаете их синтаксисом фигурных фигурных скобок.
См. руководство по PHP, "сложный (фигурный) синтаксис."
Ответ 2
Я знаю синтаксис только при использовании переменных переменных:
$userProp = 'id';
$this->_session->{'user_'.$userProp};
Ответ 3
Возможно, это большое преимущество этого синтаксиса, в общем, в области волосатых вещей и вещей, которые вы, вероятно, хотите избежать.
Он позволяет использовать символы в именах переменных, которые иначе не передаются.
т.е.:
$this->object->{"hello world\0\n"}
$this->object->{"function(){ this is a truely awful name for a variable }"}
Ответ 4
В приведенном примере нет реальной разницы, и IMO $this->_session->user_id
следует использовать, потому что он более ясный.
То, что для фигурного фигурного скобка действительно полезно, - это доступ к переменной-члену путем создания выражения для его имени, например $this->_session->{'user_id' . $index}
.
Ответ 5
Два примера в вашем вопросе делают то же самое. PHP позволяет вам получить доступ к элементам данных/методам несколькими способами...
object->{'name_of_member'};
object->name_of_member;
$member = 'name_of_member';
object->$member;