PHP ကျူတိုရီရယ်

PHP ပင်မစာမျက်နှာ PHP မိတ်ဆက် PHP ထည့်သွင်းပါ။ PHP Syntax PHP မှတ်ချက်များ PHP Variables များ PHP Echo / Print PHP Data အမျိုးအစားများ PHP စာတန်းများ PHP နံပါတ်များ PHP သင်္ချာ PHP Constants PHP Operator များ PHP If...Else...Elseif PHP Switch PHP Loops PHP လုပ်ဆောင်ချက်များ PHP Arrays PHP Superglobals PHP RegEx

PHP Forms

PHP Form ကိုင်တွယ်ခြင်း။ PHP Form Validation PHP Form လိုအပ်ပါသည်။ PHP Form URL/E-mail PHP Form ပြီးပါပြီ။

PHP အဆင့်မြင့်

PHP နေ့စွဲနှင့် အချိန် PHP ပါဝင်ပါတယ်။ PHP ဖိုင်ကိုင်တွယ်ခြင်း PHP ဖိုင်ကို ဖွင့်/ဖတ်ပါ။ PHP ဖိုင်ကို ဖန်တီး/ရေးပါ။ PHP ဖိုင်ကို တင်ခြင်း။ PHP Cookies PHP စက်ရှင်များ PHP Filters PHP Filters Advanced PHP ပြန်ခေါ်ခြင်းလုပ်ဆောင်ချက်များ PHP JSON PHP ခြွင်းချက်

PHP OOP

PHP OOP ဆိုတာဘာလဲ PHP အတန်းများ/အရာဝတ္ထုများ PHP Constructor PHP Destructor PHP Access Modifiers PHP Inheritance PHP Constants PHP Abstract အတန်းများ PHP မျက်နှာပြင်များ PHP လက္ခဏာများ PHP Static Methods PHP Static Properties PHP Namespaces PHP Iterables

MySQL ဒေတာဘေ့စ်

MySQL ဒေတာဘေ့စ် MySQL ချိတ်ဆက်မှု MySQL သည် DB ကိုဖန်တီးပါ။ MySQL ဇယားဖန်တီးပါ။ MySQL သည် Data ကိုထည့်သွင်းပါ။ MySQL နောက်ဆုံး ID ကိုရယူပါ။ MySQL တွင် Multiple ထည့်သွင်းပါ။ MySQL ပြင်ဆင်ထားသည်။ MySQL Data ကို ရွေးပါ။ MySQL ဘယ်မှာလဲ။ MySQL Order By MySQL က Data တွေကို ဖျက်လိုက်ပါ။ MySQL အပ်ဒိတ်ဒေတာ MySQL ကန့်သတ်ဒေတာ

PHP XML

PHP XML ပါဆာများ PHP SimpleXML Parser PHP SimpleXML - ရယူပါ။ PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX နိဒါန်း AJAX PHP AJAX ဒေတာဘေ့စ် AJAX XML AJAX တိုက်ရိုက်ရှာဖွေမှု AJAX စစ်တမ်း

PHP ဥပမာများ

PHP ဥပမာများ PHP Compiler PHP Quiz PHP လေ့ကျင့်ခန်းများ PHP Certificate

PHP အ ကိုးအကား

PHP ခြုံငုံသုံးသပ်ချက် PHP Array PHP ပြက္ခဒိန် PHP နေ့စွဲ PHP လမ်းညွှန် PHP အမှား PHP ခြွင်းချက် PHP ဖိုင်စနစ် PHP Filter PHP FTP PHP JSON PHP သော့ချက်စာလုံးများ PHP Libxml PHP Mail PHP သင်္ချာ PHP ထွေ PHP MySQLi PHP ကွန်ရက် PHP Output Control PHP RegEx PHP SimpleXML PHP Stream PHP String PHP Variable ကိုင်တွယ်ခြင်း။ PHP XML Parser PHP Zip PHP အချိန်ဇုန်များ

PHP OOP - Abstract Classes


PHP - Abstract Classes နှင့် Methods များသည် အဘယ်နည်း။

Abstract classes နှင့် method များသည် parent class တွင် အမည်ပေးထားသည့် method တစ်ခုရှိသော်လည်း အလုပ်များကိုဖြည့်ရန် ၎င်း၏ child class(es) လိုအပ်ပါသည်။

abstract class သည် အနည်းဆုံး abstract method တစ်ခုပါရှိသော class တစ်ခုဖြစ်သည်။ abstract method သည် ကြေငြာထားသော method တစ်ခုဖြစ်သော်လည်း code တွင် အကောင်အထည်မဖော်ပါ။

abstract abstract class သို့မဟုတ် method ကို keyword ဖြင့် သတ်မှတ်သည် -

အထားအသို

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

စိတ္တဇအတန်းအစားမှ အမွေဆက်ခံရသောအခါ၊ ကလေးအတန်းအစားနည်းလမ်းကို အမည်တူနှင့် တူညီသော သို့မဟုတ် ကန့်သတ်ဝင်ရောက်မှုနည်းသော ပြုပြင်မွမ်းမံမှုဖြင့် သတ်မှတ်ရပါမည်။ ထို့ကြောင့်၊ abstract method ကို ကာကွယ်ထားသည်ဟု သတ်မှတ်ပါက၊ child class method ကို ကာကွယ်သည် သို့မဟုတ် public အဖြစ် သတ်မှတ်ရမည်၊ သို့သော် သီးသန့်မဟုတ်ပေ။ ထို့အပြင် လိုအပ်သော အကြောင်းပြချက်များ၏ အမျိုးအစားနှင့် အရေအတွက်သည်လည်း အတူတူပင်ဖြစ်ရပါမည်။ သို့သော်၊ ကလေးအတန်းများတွင် ရွေးချယ်နိုင်သော ငြင်းခုံမှုများလည်း ရှိနိုင်သည်။

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

  • ကလေးအတန်းအစားနည်းလမ်းကို အမည်တူဖြင့် သတ်မှတ်ရမည်ဖြစ်ပြီး ၎င်းသည် parent abstract method အား ပြန်လည်ကြေငြာပေးသည်။
  • ကလေးအတန်းအစားနည်းလမ်းကို တူညီသော သို့မဟုတ် ကန့်သတ်ဝင်ရောက်မှုနည်းသော မွမ်းမံမှုဖြင့် သတ်မှတ်ရပါမည်။
  • လိုအပ်သော အကြောင်းပြချက်များ၏ အရေအတွက်သည် တူညီရပါမည်။ သို့သော်၊ ကလေးအတန်းအစားတွင် ရွေးချယ်နိုင်သော အကြောင်းပြချက်များ ရှိနိုင်သည်။

ဥပမာတစ်ခုကိုကြည့်ရအောင်။

ဥပမာ

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

// Child classes
class Audi extends Car {
  public function intro() : string {
    return "Choose German quality! I'm an $this->name!";
  }
}

class Volvo extends Car {
  public function intro() : string {
    return "Proud to be Swedish! I'm a $this->name!";
  }
}

class Citroen extends Car {
  public function intro() : string {
    return "French extravagance! I'm a $this->name!";
  }
}

// Create objects from the child classes
$audi = new audi("Audi");
echo $audi->intro();
echo "<br>";

$volvo = new volvo("Volvo");
echo $volvo->intro();
echo "<br>";

$citroen = new citroen("Citroen");
echo $citroen->intro();
?>

နမူနာရှင်းပြထားပါတယ်။

Audi၊ Volvo နှင့် Citroen အတန်းအစားများသည် Car class မှ အမွေဆက်ခံပါသည်။ ဆိုလိုသည်မှာ Audi၊ Volvo နှင့် Citroen အတန်းများသည် အများသူငှာ $name ပိုင်ဆိုင်မှုအပြင် အမွေဆက်ခံမှုကြောင့် Car class မှ public __construct() method ကို အသုံးပြုနိုင်သည်။

သို့သော်၊ intro() သည် ကလေးအတန်းများအားလုံးတွင် သတ်မှတ်သင့်သော abstract method တစ်ခုဖြစ်ပြီး ၎င်းတို့သည် စာကြောင်းတစ်ခုကို ပြန်ပေးသင့်သည်။



PHP - နောက်ထပ် Abstract Class နမူနာများ

abstract method တွင် argument တစ်ခုပါသည့် အခြားသော ဥပမာကို ကြည့်ကြပါစို့။

ဥပမာ

<?php
abstract class ParentClass {
  // Abstract method with an argument
  abstract protected function prefixName($name);
}

class ChildClass extends ParentClass {
  public function prefixName($name) {
    if ($name == "John Doe") {
      $prefix = "Mr.";
    } elseif ($name == "Jane Doe") {
      $prefix = "Mrs.";
    } else {
      $prefix = "";
    }
    return "{$prefix} {$name}";
  }
}

$class = new ChildClass;
echo $class->prefixName("John Doe");
echo "<br>";
echo $class->prefixName("Jane Doe");
?>

Abstract Method တွင် အငြင်းအခုံတစ်ခုရှိနေသည့် အခြားဥပမာကို ကြည့်ကြပါစို့၊ နှင့် ကလေးအတန်းတွင် မိဘ၏ abstract method တွင် သတ်မှတ်ထားခြင်းမရှိသော ရွေးချယ်နိုင်သော အကြောင်းပြချက်နှစ်ခုရှိသည်။

ဥပမာ

<?php
abstract class ParentClass {
  // Abstract method with an argument
  abstract protected function prefixName($name);
}

class ChildClass extends ParentClass {
  // The child class may define optional arguments that are not in the parent's abstract method
  public function prefixName($name, $separator = ".", $greet = "Dear") {
    if ($name == "John Doe") {
      $prefix = "Mr";
    } elseif ($name == "Jane Doe") {
      $prefix = "Mrs";
    } else {
      $prefix = "";
    }
    return "{$greet} {$prefix}{$separator} {$name}";
  }
}

$class = new ChildClass;
echo $class->prefixName("John Doe");
echo "<br>";
echo $class->prefixName("Jane Doe");
?>