ВНИМАНИЕ: Запись на курсы по HTML, CSS, JavaScript, PHP, Python, React, Vue, Laravel и другим фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
⊗ppOpAdNOC 21 of 107 menu
Вступайте в телеграмм-канал сайта code.mu: новинки, статьи, интервью, задачи, бесплатные курсы и тренинги. Жми для вступления:)

Оператор безопасного извлечения в цепочках в ООП в PHP

Оператор безопасного извлечения ?-> может применяться в цепочках вызовов. Давайте посмотрим на примере. Пусть у нас есть следующие классы:

<?php class User { public $city = null; } class City { public function getName() { return 'city name'; } } ?>

Пусть мы хотим получить город юзера через цепочку:

<?php $user = new User(); $user->city = new City(); echo $user->city->getName(); ?>

В случае, если город равен null, то вызов такой цепочки приведет к ошибке:

<?php $user = new User(); $user->city = null; echo $user->city->getName(); // ошибка ?>

Чтобы подавить ошибку, мы можем использовать оператор безопасного извлечения:

<?php $user = new User(); $user->city = null; echo $user->city?->getName(); ?>

Пусть теперь и город может быть null. В этом случае мы можем использовать оператор безопасного извлечения два раза:

<?php $user = null; echo $user?->city?->getName(); ?>

Улучшите следующий код через оператор безопасного извлечения:

<?php class Employee { public $name; public $position; public function __construct($name, $position) { $this->name = $name; $this->position = $position; } } class Position { private $name; public function __construct($name) { $this->name = $name; } public function getName() { return $this->name; } } $position = new Position('developer'); $employee = new Employee('john', $position); echo $employee->position->getName(); ?>
byenru