Пытаюсь разобраться в symfony3.3
В закешировнном контейнере
%project_root%/var/cache/dev/appDevDebugProjectContainer.php
в методе создания сервиса вижу такой код:
/**
* Gets the public 'assets.context' shared service.
*
* @return \Symfony\Component\Asset\Context\RequestStackContext
*/
protected function getAssets_ContextService()
{
return $this->services['assets.context'] = new \Symfony\Component\Asset\Context\RequestStackContext(${($_ = isset($this->services['request_stack']) ? $this->services['request_stack'] : $this->get('request_stack')) && false ?: '_'});
}
смущает вот-этот участок:
${($_ = isset($this->services['request_stack']) ? $this->services['request_stack'] : $this->get('request_stack')) && false ?: '_'}
не совсем понятно как он работает и зачем тут нужен, ведь в предыдущих версиях symfony не было такой странной конструкции и вместо этого было просто
$this->get('request_stack')
Вопрос: зачем нужна эта странная конструкция?
И почему нельзя просто написать:
isset($this->services['request_stack']) ? $this->services['request_stack'] : $this->get('request_stack')
вместо
${($_ = isset($this->services['request_stack']) ? $this->services['request_stack'] : $this->get('request_stack')) && false ?: '_'}
?