Первый вопрос о SO, и это настоящий кандидат в RTM. Но я обещаю, что я посмотрел и не могу найти его. Я с радостью сделаю #headpalm, когда окажется, что я пропустил простую вещь.
Попытка выяснить Zend Framework и наткнулась на следующий синтаксис:
$this->_session->{'user_id'}
Я никогда не видел синтаксис фигурных фигурных скобок, используемый для доступа к тому, что, как представляется, является переменной-членом. Как это отличается от
$this->_session->user_id
Я предполагаю, что _session не имеет значения, но включает его в вопрос, так как это может быть не так.
Являются ли фигурные скобки просто соглашением о чистоте, которое пытается обернуть составную переменную имя user_id? Или это какой-то специальный аксессор?
Любые указатели на TFM, чтобы я мог R up, был бы смиренно оценен.
Большое спасибо. Пожалуйста, будьте нежны.
Кулисные фигурные скобки используются для явного указания конца имени переменной. Например:
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 , «сложный (фигурный) синтаксис».
Я знаю синтаксис только при использовании переменных переменных :
$userProp = 'id'; $this->_session->{'user_'.$userProp};
Тем не менее, возможно, это большое преимущество этого синтаксиса, как правило, в области волосатых вещей и вещей, которые, вероятно, вы хотите избежать.
Это позволяет использовать символы в именах переменных, которые иначе не передаются.
то есть:
$this->object->{"hello world\0\n"} $this->object->{"function(){ this is a truely awful name for a variable }"}
В примере, который вы даете, нет никакой реальной разницы, и IMO $this->_session->user_id
следует использовать, потому что он более $this->_session->user_id
.
Для синтаксиса фигурных фигурных скобок на самом деле полезно получить доступ к переменной $this->_session->{'user_id' . $index}
выражение для его имени, например $this->_session->{'user_id' . $index}
$this->_session->{'user_id' . $index}
.
Два примера в вашем вопросе делают то же самое. PHP позволяет вам получить доступ к элементам данных / методам несколькими способами …
object->{'name_of_member'}; object->name_of_member; $member = 'name_of_member'; object->$member;