په PHP OOP کې میراث

I

میراث څه شی دی؟

کله چې یوه طبقه له بلې طبقې څخه ترلاسه کیږي، دا د میراث په توګه پیژندل کیږي. دلته په پی ایچ پی کې د میراث پورې اړوند ځینې مهم شرایط دي.

  • اصلي ټولګی – هغه ټولګي چې له هغې څخه نور ټولګي اخستل کیږي د والدینو ټولګي بلل کیږي. دا د بیس کلاس په نوم هم پیژندل کیږي.
  • د ماشوم ټولګی - هغه ټولګي چې له بل ټولګي څخه اخیستل شوي د ماشوم ټولګي بلل کیږي. د دې لپاره ځینې نور نومونه هم شتون لري لکه د پاڼی طبقه یا اخذ شوی طبقه.
په پی ایچ پی کې میراث

په PHP کې د ټولګي میراث څنګه؟

یو ټولګي د کارولو له لارې میراث کیدی شي غزول کلیدي کلمه لاندې مثال وګورئ.

<?php
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  public function intro() {
    echo "The fruit is {$this->name} and the color is {$this->color}.";
  }
}

// Apple is inherited from Fruit
class Apple extends Fruit {
  public function message() {
    echo "I am from Fruit class or Apple one? ";
  }
}
$apple= new Apple("Apple", "red");
$apple->message();
$apple->intro();
?>

په پورته مثال کې

  • موږ د ځینې ملکیتونو او میتودونو سره اساس یا د والدین ټولګي میوه رامینځته کوو.
  • موږ یو بل ټولګي ایپل جوړوو چې د توسیع کلیدي کلمې په کارولو سره د والدین طبقې Fruit پراخوي / میراث کوي.
  • د مڼې مثال/توجه جوړه کړئ او د میراث په کارولو سره د میوو ټولګي میتود ته لاسرسی ومومئ.

په PHP کې د میراث د پیژندنې بشپړول، موږ ستاسو لپاره لاندې ټکي راټولوو.

  1. میراث د ماشوم ټولګي ته اجازه ورکوي چې عامه __ ساختمان، میتودونو او د والدین ټولګي ملکیتونو ته لاسرسی ومومي.
  2. په پورتني مثال کې، موږ کولی شو د ایپل ټولګي میتود ته د هغې د څیز په کارولو سره لاسرسی ولرو ، او همدارنګه د والدین ټولګي میتودونه.

په میراث کې د خوندي لاسرسي ترمیم کونکو ساحه

په تیرو درسونو کې، موږ زده کړل چې د ټولګي خوندي ځانګړتیاوې / میتودونه په ټولګي کې د لاسرسي وړ دي او ټولګیو څخه ترلاسه شوي.

د دې لپاره چې په میراث کې د خوندي لاسرسي بدلونونو ساحه پوه شي، راځئ چې لومړی لاندې مثال ته وګورو.

<?php
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  protected function intro() {
    echo "I am $this->name and my color is $this->color";
  }
}

class Apple extends Fruit {
  public function message() {
    echo "I am from Fruit class or Apple one?";
  }
}

$apple = new Apple("Apple", "red");
$apple->message();
$apple->intro();
?>

په پورته مثال کې:

  • موږ د ځینې عامه ځانګړتیاو او خوندي میتود سره د ټولګي میوه رامینځته کوو.
  • موږ یو بل ټولګي مڼې جوړوو، د میوو ټولګي څخه پراخیږي او مثال یې جوړوو.
  • کله چې موږ د ایپل کلاس څیز په کارولو سره د میوو ټولګي خوندي میتود ته د لاسرسي هڅه کوو ، نو دا تېروتنه ورکوي ځکه چې موږ هڅه کوو د ترلاسه شوي ټولګي څخه بهر د میوو ټولګي خوندي غړي ته لاسرسی ومومئ.

راځئ چې بل مثال ته لاړ شو، کوم چې په حقیقت کې د پورتنۍ بیلګې څخه یو څه بدل شوی دی.

<?php
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  protected function intro() {
    echo "I am {$this->name} and my color is {$this->color}.";
  }
}

class Apple extends Fruit {
  public function message() {
    echo "Am I a fruit or an apple? ";
    $this -> intro(); // protected
  }
}

$apple = new Apple("Apple", "red");
$strawberry->message();
?>

په پورته مثال کې، د میوو ټولګي خوندي میتود د مڼې په ټولګي کې د لاسرسي وړ دی ځکه چې موږ ورته په ټولګي کې لاسرسی لرو.

په وراثت کې زیاتیدل

پراخه کول د ورته نوم په کارولو سره د ماشومانو په ټولګیو کې د والدینو ټولګیو میتودونو بیا تعریف کولو ته اشاره کوي. لاندې په میراث کې د زیاتوالي لاندې مثال وګورئ.

<?php
class Fruit {
  public $name;
  public $color;
  public function __construct($name, $color) {
    $this->name = $name;
    $this->color = $color;
  }
  public function intro() {
    echo "I am {$this->name} and my color is {$this->color}.";
  }
}

class Apple extends Fruit {
  public $weight;
  public function __construct($name, $color, $weight) {
    $this->name = $name;
    $this->color = $color;
    $this->weight = $weight;
  }
  public function intro() {
    echo "I am {$this->name}, my color is {$this->color}. Also, my weight is {$this->weight} kg.";
  }
}

$apple= new Apple("Apple", "red", 50);
$apple->intro();
?>

په پورته مثال کې:

  • موږ د والدینو ټولګي Fruit او د ماشوم ټولګي مڼې جوړوو کوم چې د میوو ټولګي پراخوي او د __contruct او intro میتودونه بیا تعریفوي.
  • په یاد ولرئ چې د ماشوم ټولګي مڼه د ورته نوم سره __construct او intro میتودونه تعریفوي. په هرصورت، پیرامیټونه کیدای شي توپیر ولري.
  • موږ د ایپل کلاس انټینس رامینځته کوو او پیرامیټرې د ساختماني فنکشن ته انتقالوو.
  • کله چې موږ د ایپل مثال په کارولو سره د انټرو میتود ته زنګ ووهو ، نو دا د ایپل کلاس د تعارف میتود بولي ځکه چې موږ د ایپل کلاس جوړونکي په کارولو سره د ایپل څیز مثال رامینځته کړی.

په میراث کې د وروستي کلیدي کلمې رول

د وروستي کلیدي کلمه د ماشوم / ترلاسه شوي ټولګي مخه نیسي چې د مور او پلار / اساس ټولګي میتود له پامه غورځوي. د وروستي کلیدي کلمې په کارولو پوهیدو لپاره لاندې مثال ته وګورئ.

<?php
class Fruit {
  final public function intro() {
    // code
  }
}

class Apple extends Fruit {
// error to override the intro
  public function intro() {
    // code
  }
}
?>

په پورتني مثال کې، د مڼې ټولګي هڅه کوي د تعارف میتود له پامه وغورځوي. دا به یوه تېروتنه وکړي ځکه چې موږ د میوو ټولګي د تعارف میتود سره وروستۍ کلیدي کلمه کارولې ده.

د یو چارواکي لپاره کلیک وکړئ د پی ایچ پی میراث ته حواله.

نتيجه ګيري:

میراث نه یوازې په PHP کې د OOP مهم مفهوم دی، مګر په هره ژبه کې، دا مهم رول لوبوي. د مرکې له نظره، د میراث پوښتنې خورا مهم دي. نو، تاسو باید پخپله میراث تمرین کړئ.

نظر اضافه کړئ

د ښوونکي شبکه

له A څخه تر Z پورې PHP زده کړئ