OOP ရှိ PHP တွင် ကွင်းဆက်များတွင် လုံခြုံစွာ ထုတ်ယူမှု အော်ပရေတာ

လုံခြုံစွာ ထုတ်ယူမှု အော်ပရေတာ ?-> သည် ခေါ်ဆိုမှု ကွင်းဆက်များတွင် အသုံးပြုနိုင်ပါသည်။ ဥပမာတစ်ခုဖြင့် ကြည့်ကြပါစို့။ ကျွန်ုပ်တို့တွင် အောက်ပါ class များ ရှိသည်ဟု ဆိုကြပါစို့။

php<?php
  class User {
    public $city = null;
  }
  
  class City {
    public function getName() {
      return 'မြို့အမည်';
    }
  }
?>

User ၏ မြို့ကို ကွင်းဆက်ဖြင့် ရယူလိုသည်ဟု ဆိုကြပါစို့။

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

မြို့သည် null နှင့် ညီသော အခြေအနေတွင်၊ �ိုကဲ့သို့ ကွင်းဆက်ခေါ်ဆိုမှုသည် အမှားတစ်ခု ဖြစ်စေမည်။

php<?php
  $user = new User();
  $user->city = null;
  
  echo $user->city->getName(); // အမှား
?>

အမှားကို နှိမ်နှင်းရန်၊ ကျွန်ုပ်တို့သည် လုံခြုံစွာ ထုတ်ယူမှု အော်ပရေတာကို အသုံးပြုနိုင်ပါသည်။

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

ယခု မြို့သည်လည်း null ဖြစ်နိုင်သည်ဟု ဆိုကြပါစို့။ ဤအခြေအနေတွင်၊ ကျွန်ုပ်တို့သည် လုံခြုံစွာ ထုတ်ယူမှု အော်ပရေတာကို နှစ်ကြိမ် အသုံးပြုနိုင်ပါသည်။

php<?php
  $user = null;
  
  echo $user?->city?->getName();
?>
Задание 1

လုံခြုံစွာ ထုတ်ယူမှု အော်ပရေတာဖြင့် အောက်ပါ ကုဒ်ကို မွမ်းမံပါ။

php<?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();
?>