Вставка фигурных скобок в PHP

Я читал источник OpenCart, и я столкнулся с таким выражением ниже. Может ли кто-нибудь объяснить это мне:

$quote = $this->{'model_shipping_' . $result['code']}->getQuote($shipping_address); 

В заявлении есть странная часть кода, которая
$this->{'model_shipping_' . $result['code']}
который имеет {} и мне интересно, что это? Это выглядит для меня объектом, но я не уверен.

Related of "Вставка фигурных скобок в PHP"

Кулисные фигурные скобки используются для обозначения интерполяции строк или переменных в PHP. Это позволяет вам создавать «переменные функции», которые могут позволить вам вызывать функцию, не зная, на самом деле она.

Используя это, вы можете создать свойство объекта почти так же, как и массив:

 $property_name = 'foo'; $object->{$property_name} = 'bar'; // same as $object->foo = 'bar'; 

Или вы можете вызвать один из множества методов, если у вас есть какой-то класс REST API:

 $allowed_methods = ('get', 'post', 'put', 'delete'); $method = strtolower($_SERVER['REQUEST_METHOD']); // eg, 'POST' if (in_array($method, $allowed_methods)) { return $this->{$method}(); // return $this->post(); } 

Он также используется в строках для более легкой идентификации интерполяции, если вы хотите:

 $hello = 'Hello'; $result = "{$hello} world"; 

Конечно, это упрощения. Цель вашего примера кода – запустить один из нескольких функций в зависимости от значения $result['code'] .

Имя свойства вычисляется во время выполнения из двух строк

Скажем, $result['code']'abc' , доступное свойство будет

 $this->model_shipping_abc 

Это также полезно, если у вас есть странные символы в именах свойств или методов.

В противном случае нельзя было бы различать следующее:

 class A { public $f = 'f'; public $func = 'uiae'; } $a = new A(); echo $a->f . 'unc'; // "func" echo $a->{'f' . 'unc'}; // "uiae" 

Кулисные фигурные скобки используются для явного указания конца имени переменной.

https://stackoverflow.com/a/1147942/680578

http://php.net/manual/en/language.types.string.php#language.types.string.parsing.complex