PHP OOP හි පන්තියකින් උරුම වීම සහ අන්තර්මුඛය ක්‍රියාත්මක කිරීම

පන්තියක් වෙනත් පන්තියකින් උරුම විය හැකිය සහ ඒ සමඟම යම් අන්තර්මුඛයක් ක්‍රියාත්මක කළ හැකිය. ප්‍රායෝගික උදාහරණයකින් සලකා බලමු.

අපි Programmer පන්තියක් සෑදීමට අවශ්‍ය යැයි සිතමු, එහි නම, වැටුප් සහ භාෂා ලැයිස්තුවක් ඇති වේ, ප්‍රෝග්‍රෑමර් අයකු දන්නා. දැනට අපේ පන්ති විස්තරය ඉතා අපැහැදිලිය: ඔව්, පන්තියේ නම, වැටුප්, භාෂා ඇත - නමුත් අපේ පන්තියේ කුමන ක්‍රම තිබේද?

අපි අපේ පන්තිය වඩාත් නිවැරදිව විස්තර කරමු iProgrammer අන්තර්මුඛය භාවිතා කරමින්:

iProgrammer.php<?php
  interface iProgrammer
  {
    public function __construct($name, $salary);
    public function getName();
    public function getSalary();
    public function getLangs();
    public function addLang($lang);
  }
?>

අපි දැනටමත් ක්‍රියාත්මක කර ඇති ඒවා තුළ හැරී සිටින බව සිතමු පන්ති සහ, පෙනෙන විදිහට, අපට දැනටමත් සමාන පන්තියක් තිබේ Employee. එය සියල්ල ක්‍රියාත්මක නොකරයි Programmer පන්ති ක්‍රම, නමුත් කොටසක්. අප සතුව දැනටමත් පවතින පන්තියේ කේතය මෙන්න:

Employee.php<?php
  class Employee
  {
    private $name;
    private $salary;
    
    public function __construct($name, $salary)
    {
      $this->name = $name;
      $this->salary = $salary;
    }
    
    public function getName()
    {
      return $this->name;
    }
    
    public function getSalary()
    {
      return $this->salary;
    }
  }
?>

අපගේ නඩුවේ තර්කානුකූලව මෙය කිරීමට වේ අපගේ නව පන්තිය Programmer උරුම වී ඇත අවශ්‍ය ක්‍රමවල කොටසක් Employee පන්තියෙන් (අපි පසුව කොටසක් ක්‍රියාත්මක කරන්නෙමු දැනටමත් නව පන්තිය තුළ):

Programmer.php<?php
  class Programmer extends Employee
  {
    
  }
?>

ඒ සමඟම අපි දන්නවා Pogrammer පන්තිය iProgrammer අන්තර්මුඛය ක්‍රියාත්මක කළ යුතුය:

Programmer.php<?php
  class Programmer implements iProgrammer
  {
    
  }
?>

අපි පන්තියෙන් උරුම වීම ඒකාබද්ධ කරමු Employee සහ අන්තර්මුඛය ක්‍රියාත්මක කිරීම iProgrammer:

Programmer.php<?php
  class Programmer extends Employee implements iProgrammer
  {
    
  }
?>

එය අපගේ පන්තිය Pogrammer වේ Employee පන්තියෙන් ක්‍රම උරුම වේ __construct, getName සහ getSalary, ක්‍රම addLang සහ getLangs අපි ක්‍රියාත්මක කිරීමට සිදුවනු ඇත:

Programmer.php<?php
  class Programmer extends Employee implements iProgrammer
  {
    public function addLang($lang)
    {
      // ක්‍රියාත්මක කිරීම
    }
    
    public function getLangs()
    {
      // ක්‍රියාත්මක කිරීම
    }
  }
?>

iProgrammer අන්තර්මුඛය කිසිසේත් ගණන් නොගනී, පන්තියට උරුම ක්‍රම හෝ උරුම ක්‍රම - ප්‍රධාන දෙය නම් සියලු විස්තර කරන ලද ක්‍රම විය යුතුය ක්‍රියාත්මක කර ඇත.

Задание 1

මගේ පන්තියේ කේතය පිටපත් කරන්න Employee සහ අන්තර්මුඛ කේතය iProgrammer. පිටපත් නොකරන්න මගේ පන්ති සැකිල්ල Programmer - මගේ කේතය දෙස නොබලා මෙම ක්‍රියාත්මක කරන්න පන්තිය ඔබම.