په PHP OOP کې د خلاصې ټولګي

A

پدې مقاله کې به موږ په PHP کې د خلاصې ټولګي زده کړو.

په PHP کې د خلاصې ټولګي څه شی دی؟

یو خلاص ټولګي د میتودونو اعلامیه لري مګر د دوی تعریف نلري. دا یوازې د دوی نومونه لري. دا د ماشوم ټولګي مسؤلیت دی چې دا میتودونه تعریف کړي.

د خلاصون طریقه څه ده؟

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

  • انتزاعي کلیدي کلمه د خلاصې ټولګي یا میتود اعلانولو لپاره کارول کیږي.
  • یو خلاص ټولګي باید لږترلږه یو خلاص میتود ولري. په هرصورت، دا کولی شي غیر خلاصې میتودونه هم ولري.

سنټکس

<?php
abstract class ParentClass {
  abstract public function someMethod1();
  abstract public function someMethod2($name, $color);
  abstract public function someMethod3() : string;
}
?>

په PHP کې د خلاصې ټولګي قواعد څه دي؟

  • یو خلاص ټولګي باید لږترلږه یو خلاص میتود ولري. په هرصورت، دا کولی شي غیر خلاصې میتودونه هم ولري.
  • کله چې یو ماشوم د وراثت د خلاصون والدین ټولګي په نوم یادیږي، دا باید د ورته نوم سره د والدین ټولګي خلاصې میتودونه تعریف کړي.
  • پداسې حال کې چې د ماشوم په ټولګي کې د اسبټریټ میتودونو تعریف کول باید د لږ محدود لاسرسي ترمیم کونکي سره تعریف شي. د مثال په توګه، که چیرې د والدین ټولګي د خلاصې میتود ولري ساتل د لاسرسي ترمیم کوونکی. نو، کله چې د ماشوم ټولګي دا طریقه تعریفوي، نو دا باید د لاسرسي ترمیم کونکي په توګه وساتي ساتل or د عامه. دا نشي کولی دا تنظیم کړي د خصوصي، ځکه چې دا د خوندي شوي څخه ډیر محدود دی.
  • د ماشوم طبقه چې د خلاصې میتود تعریف کوي باید د مساوي شمیر دلیلونو څخه تیر شي لکه څنګه چې د والدین اسبټریټ ټولګي کې په اعلامیه کې مشخص شوي. په هرصورت، د ماشوم ټولګي کولی شي د اړتیا پرته نور اختیاري / اضافي دلیلونه ولري.

په PHP کې د خلاصې ټولګي مثال

<?php
// Parent abstract class
abstract class Bike {
  public $name;
  public function __construct($name) {
    $this->name = $name;
  }
  abstract public function introduction() : string;
}

// Child classes defining the parent classes
class Honda extends Bike {
  public function intro() : string {
    return "I am $this->name!";
  }
}

class Suzuki extends Bike {
  public function introduction() : string {
    return "I am $this->name!";
  }
}

// Objects from child classes
$honda = new honda("Honda");
echo $honda->introduction();

$suzuki= new suzuki("Suzuki");
echo $suzuki->introduction();

?>

د پورتنۍ بېلګې تشریح

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

د میتود په نظر کې نیولو سره د اضافي دلیلونو سره د خلاصې ټولګي مثال



<?php
// Parent abstract class
abstract class Bike {
  public $name;
  public function __construct($name) {
    $this->name = $name;
  }
  abstract protected function introduction($model) : string;
}

// Child classes defining the parent classes
class Honda extends Bike {
  public function intro($model) : string {
    return "I am $this->name. My model is $model";
  }
}

class Suzuki extends Bike {
  public function introduction($model, $color=null) : string {
    return "I am $this->name. My model is $model and color is $color";
  }
}

// Objects from child classes
$honda = new honda("Honda");
echo $honda->introduction();

$suzuki= new suzuki("Suzuki");
echo $suzuki->introduction();
?>

د پورتنۍ بېلګې تشریح

  • د پورتنۍ بېلګې اساسي منطق د پخوانۍ بېلګې په څېر دی. په هرصورت، موږ د معرفي کولو میتود کې فنکشن ته اضافي دلیل انتقالوو suzuki ټولګي.
  • لکه څنګه چې موږ مخکې په دې ټیوټوریل کې اصول تعریف کړل، د ماشوم ټولګي ته د لاسرسي ترمیم کونکي پداسې حال کې چې د والدین ټولګي خلاصې میتود پلي کول باید د دې میتود اعلان لپاره د والدین ټولګي کې مشخص شوي څخه لږ وي. نو، د ماشوم دواړه ټولګي د پیژندنې میتود تعریف کولو لپاره د عامه لاسرسي ترمیم کونکي کاروي.
  • هڅه وکړئ د خصوصي لاسرسي ترمیم کونکي سره فنکشن تعریف کړئ ، دا به یوه تېروتنه رامینځته کړي.

یادونه: د خلاصې ټولګي هیڅ جوړونکي میتود نلري. نو، موږ نشو کولی د خلاصې ټولګي مثال جوړ کړو.

د ټولګي خلاصون PHP 8 رسمي اسناد.

نظر اضافه کړئ

د ښوونکي شبکه

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