Зачем в PHP нужны фигурные скобки?

201
05 декабря 2017, 22:14

Какой смысл в данных фигурных скобках?

$obj->{$options['option.disable']} = $options['disable'];
Answer 1

Из документации

К свойствам класса также можно получить доступ динамически. Переменное имя свойства будет разрешено в том контексте, в котором произойдет вызов к нему. Например, в случае выражения $foo->$bar, локальная область видимости будет просканирована на наличие переменной $bar, значение которой будет использовано в качестве имени свойства объекта $foo. Это также работает и в том случае, если $bar осуществляет доступ к элементу массива.

Фигурные скобки могут также использоваться, чтобы четко разграничить имя свойства. Они наиболее полезны при получении доступа к значениям внутри свойства, которое содержит массив, когда имя свойства состоит из нескольких частей, либо когда имя свойства содержит символы, которые иначе не действительны (например, из функции json_decode() или из SimpleXML).

Обычно фигурные скобки используются для динамического доступа к свойствам класса, то есть когда имя свойства содержится в переменной. В вашем случае, переменная содержащая имя свойства - массив. Поэтому запись без указания скобок будет неоднозначна, т.к. не ясно вы хотите получить доступ к свойству-массиву с именем $options т.е. формально ($obj->options)['option.disable'], либо все же $options['option.disable'] содержит имя свойства.

В общем, скобки явным образом отделяют имя свойства. Наиболее часто такая запись используется для доступа к свойствам, когда их имена не соответствуют правилам именовнаия, т.е. например содержат дефис $obj->{'some-property'}. Такое может получится при десериализации объектов из json или xml.

READ ALSO
Интеграция компонентов Shortcode и SP Page Builder (Joomla)

Интеграция компонентов Shortcode и SP Page Builder (Joomla)

Есть сайт на котором все страницы сделаны через SP Page Builder, нужно вывести на главной странице модуль с карточками этих страницДля материалов...

274
Как проверить соответсвие запроса от joomla

Как проверить соответсвие запроса от joomla

Как проверить, что на сервер пришел запрос от конкретной joomla, например, если запрос от joomla1 то выполнить код1, если нет - что-то другое?

255
DeleteAll with join?

DeleteAll with join?

В Yii2 ActiveRecord у модели есть статичный метод deleteAllКак сделать удаление с джоином? Например я хочу вот так сделать:

291
guzzlehtp и мультипоточность

guzzlehtp и мультипоточность

Всем привет!) Возник вопрос, в котором что то не могу нормально разобратьсяЕсть массив ссылок:

349