Тернарный оператор -- сокращённый синтаксис Null-коалесцентный оператор
Primary tabs
Тернарный оператор в php призван сокращать код, но иногда выражения, подлежащие проверке достаточно длинные и вместо упрощения мы видим тёмный лес:
return $this->request->getCurrentRequest()
->cookies->get('basketId')
? $this->request->getCurrentRequest()
->cookies->get('basketId')
: 0;В случаях, когда мы проверяем наличие переменной, и тоже самое значение хотим присвоить результату, можно использовать сокращённый синтаксис тернарного оператора, чтобы не дублировать код:
return $this->request->getCurrentRequest()
->cookies->get('basketId') ?? 0;Также через ?? можно поместить ещё выражения которые могут заместить первое, если существуют. Если все выражения будут == null, будет присвоено то, что указано после последних ??:
return $this->request->getCurrentRequest()
->cookies->get('basketId') ?? <ещё_выражение> ?? 0;- Log in to post comments
- 4294 reads
vedro-compota
Thu, 01/11/2018 - 15:24
Permalink
не совсем так
это не сокращённые синтансис тернарного -- это всё-таки отдельный оператора, который служит именно для проверки "на isset": http://fkn.ktu10.com/?q=node/8830
НО есть и настоящий сокращенный оператор без ветки истинности: https://fkn.ktu10.com/?q=node/15843
_____________
матфак вгу и остальная классика =)