PHP හි OOP හි ගුණාංග

ඔබ දැනටමත් දන්නා පරිදි, PHP හි කිහිපයක් වරක් උරුම ගත නොහැක එකවර පන්ති එකිනෙක, එකකින් පමණි. කලින් අපි දැනටමත් මෙම ගැටලුවට විසඳුම සමීක්ෂණය කර ඇත්තෙමු: උරුමකම වෙනුවට වස්තු භාවිතා කරන්න එක් පන්තියක් තවත් පන්තියක් තුළ.

PHP හි වෙනත් ක්රමයක් ද ඇත. එය සමන්විත වේ භාවිතයෙන් ගුණාංග. ගුණාංගය නියෝජනය කරයි දේපළ සහ ක්රම සමූහයක් ලෙස වෙනත් පන්තියකට ඇතුළු කළ හැකිය. මෙම අවස්ථාවේ දී දේපළ ගුණාංගයේ ක්රම පන්තිය මගින් දැනෙනු ඇත ඒවායේ මෙන්.

ගුණාංගයේ වාග් රීතිය පන්තියට සමානය, ගුණාංගයේ නම හැර ප්රකාශ කිරීමට අවශ්යය වචනය trait භාවිතා කරමින්.

ගුණාංගයක නිදර්ශනයක් සෑදිය නොහැක - ගුණාංග වෙනත් අය සමඟ සම්බන්ධ වීමට පමණක් අදහස් කෙරේ පන්ති. සම්බන්ධතාවය සිදු කරනු ලැබේ විධානය use භාවිතා කරමින්, ඉන් පසුව හිස්තැනකින් සම්බන්ධ වන ගුණාංගයේ නම දක්වා ඇත. මෙම විධානය පන්තියේ ආරම්භයේ ලියා ඇත.

ප්රායෝගිකව ගුණාංග යෙදීම බලමු උදාහරණයක්. අපට මෙම ගුණාංගය ලබා දී ඇතැයි සිතමු Helper, පුද්ගලික දේපළ අඩංගු වේ name සහ age, මෙන්ම ඒවායේ ගෙටර් ද:

Helper.php<?php
  trait Helper
  {
    private $name;
    private $age;
    
    public function getName()
    {
      return $this->name;
    }
    
    public function getAge()
    {
      return $this->age;
    }
  }
?>

අපට User පන්තියක් ද ඇතැයි සිතමු, එහි ඉදිකිරීම්කරුවන් ස්වභාවයෙන් සමන්විත වේ name සහ age:

User.php<?php
  class User
  {
    public function __construct($name, $age)
    {
      $this->name = $name;
      $this->age = $age;
    }
  }
?>

දැන් අපි දේපළ සඳහා ගෙටර් එකතු කරමු අපගේ පන්තියේ User. නමුත් අපි නොකරමු ඒවා පන්තිය තුළම ලියන්න, නමුත් සරලව සම්බන්ධ කරන්න ගුණාංගය Helper, මෙම ක්රමවල දැනටමත් ක්රියාත්මක කර ඇත:

User.php<?php
  class User
  {
    use Helper; // ගුණාංගය සම්බන්ධ කරන්න
    
    public function __construct($name, $age)
    {
      $this->name = $name;
      $this->age = $age;
    }
  }
?>

ගුණාංගය සම්බන්ධ කිරීමෙන් පසු අපගේ පන්තියේ දිස්වනු ඇත මෙම ගුණාංගයේ ක්රම සහ ගුණ. තවද ඒවාට පැමිණෙන්න අපි ඒවා ක්රම ලෙස සැලකිල්ලට ගනිමු සහ පන්තියේම ගුණාංග:

index.php<?php
  $user = new User('john', 30);
  echo $user->getName(); // 'john' ප්රතිදානය කරයි
  echo $user->getAge();  // 30 ප්රතිදානය කරයි
?>
Задание 1

City පන්තිය ක්රියාත්මක කරන්න name, age, population සහ ඒවා සඳහා ගෙටර්. අපගේ පන්තියට ඉඩ දෙන්න අප විසින් දැනටමත් සාදන ලද එක භාවිතා කර අපගේ කේතය සංක්ෂිප්ත කරන්න ගුණාංගය Helper.