Intereting Posts
как реализовать систему выбора динамической комбинированной коробки Проверка, является ли строка двойной или нет Невозможно правильно вставить греческие символы в базу данных mysql facebook login возвращает код как переменную в строке запроса Сделать флажок возвращать false при снятии флажка Как я могу загрузить с помощью PHP XML-файл, перенаправленный каким-то странным способом? В PHP, как вы можете очистить кеш WSDL? Предупреждение DataTables: данные JSON с сервера не могут быть проанализированы. Это вызвано ошибкой форматирования JSON Как выполнить цикл набора результатов mysql FOSUserBundle Override Roles – свойства «роли» в «Acme \ DemoBundle \ Entity \ User» уже были объявлены, но должны быть объявлены только один раз Как автоматически удалить сеанс через 5 минут бездействия на веб-сайте в php решение для COMET и PHP Как получить информацию о файле в определенном пути к каталогу, например, тип файла mime и имя файла с помощью функции php? Почему Yii вызывает метод login () при создании модели входа в систему Последовательный json_decode из-за ограничения памяти

Синтаксис фигурного скопирования PHP для переменной-члена

Первый вопрос о 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;