Тернарный оператор -- сокращённый синтаксис

Тернарный оператор в 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;
vedro-compota's picture

это не сокращённые синтансис тернарного -- это всё-таки отдельный оператора, который служит именно для проверки "на isset": http://fkn.ktu10.com/?q=node/8830

_____________
матфак вгу и остальная классика =)