უსაფრთხო ამოღების ოპერატორი ჯაჭვებში OOP-ში 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();
?>