Оператор за безопасно извличане в вериги от извиквания в ООП в 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();
?>