Abstract nga Klase sa PHP OOP

A

Niini nga artikulo, makakat-on kita og abstract nga klase sa PHP.

Unsa ang abstract nga klase sa PHP?

Ang usa ka abstract nga klase naglangkob sa deklarasyon sa mga pamaagi apan dili ang ilang kahulugan. Naglangkob lamang kini sa ilang mga ngalan. Responsibilidad sa klase sa bata ang paghubit niini nga mga pamaagi.

Unsa ang abstract nga pamaagi?

Ang usa ka abstract nga pamaagi usa ka pamaagi sa usa ka abstract nga klase nga gipahayag gamit ang abstract nga mga keyword ug wala’y sulod nga lawas. Gihubit kini sa klase sa bata.

  • abstract keyword gigamit sa pagpahayag sa usa ka abstract nga klase o pamaagi.
  • Ang usa ka abstract nga klase kinahanglan adunay labing menos usa ka abstract nga pamaagi. Bisan pa, mahimo usab kini nga adunay dili abstract nga mga pamaagi usab.

Sintaks

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

Unsa ang mga lagda sa abstract nga klase sa PHP?

  • Ang usa ka abstract nga klase kinahanglan adunay labing menos usa ka abstract nga pamaagi. Bisan pa, mahimo usab kini nga adunay dili abstract nga mga pamaagi.
  • Kung ang usa ka bata nga gitawag makapanunod sa abstract nga klase sa ginikanan, kinahanglan nga ipasabut ang abstract nga mga pamaagi sa klase sa ginikanan nga adunay parehas nga ngalan.
  • Samtang gihubit ang mga pamaagi sa asbtract sa klase sa bata, kinahanglan nga ipasabut kini nga adunay dili kaayo limitado nga pag-usab sa pag-access. Pananglitan, kung ang klase sa ginikanan naglangkob sa abstract nga pamaagi nga adunay gipanalipdan access modifier. Mao nga, kung gihubit sa klase sa bata kini nga pamaagi, kinahanglan nga ipadayon niini ang pag-usab sa pag-access niini gipanalipdan or sa publiko. Dili kini mabutang niini pribado nga, tungod kay kini mas limitado kay sa gipanalipdan.
  • Ang klase sa bata nga naghubit sa abstract nga pamaagi kinahanglan nga mopasa sa parehas nga gidaghanon sa mga argumento nga gitakda sa deklarasyon sa ginikanan nga asbtract nga klase. Bisan pa, ang klase sa bata mahimong adunay opsyonal/dugang nga mga argumento gawas sa gikinahanglan.

Pananglitan sa Abstract nga klase sa 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();

?>

Pagpatin-aw sa pananglitan sa ibabaw

  • Sa pananglitan sa ibabaw, naghimo kami usa ka abstract nga klase bike nga adunay usa ka abstract nga pamaagi pasiuna.
  • Naghimo kami og duha ka klase sa bata Honda ug Suzuki nga nagpalapad sa abstract nga klase ug naghubit sa pamaagi sa pagpaila.
  • Gihimo namo ang mga butang niini nga mga klase ug gitawag ang pamaagi sa pagpaila gamit ang ilang mga butang. Ang pamaagi sa pagpaila nagtrabaho sumala sa pagpatuman nga gihatag sa katugbang nga klase niini.

Pananglitan sa abstract nga klase nga adunay dugang nga mga argumento sa pag-overriding sa pamaagi



<?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();
?>

Pagpatin-aw sa pananglitan sa ibabaw

  • Ang sukaranan nga lohika sa pananglitan sa ibabaw sama sa miaging pananglitan. Bisan pa, gipasa namon ang dugang nga argumento sa function sa pamaagi sa pagpaila sa suzuki klase.
  • Ingon nga atong gihubit ang lagda sa sayo pa niini nga panudlo, ang access modifier sa klase sa bata samtang nag-implementar sa abstract nga pamaagi sa parent class kinahanglan nga mas ubos kay sa gitakda sa parent class alang sa deklarasyon niini nga pamaagi. Mao nga, ang duha nga klase sa bata naggamit sa modifier sa pag-access sa publiko aron mahibal-an ang pamaagi sa pagpaila.
  • Sulayi nga ipasabut ang function gamit ang pribado nga pag-access sa modifier, maghimo kini usa ka sayup.

Mubo nga sulat: Ang abstract nga klase walay bisan unsang paagi sa pagtukod. Busa, dili nato mahimo ang pananglitan sa usa ka abstract nga klase.

Ang abstraction sa klase PHP 8 opisyal nga dokumentasyon.

Idugang ang komentaryo

Network sa Tutor

Pagkat-on sa PHP gikan sa A hangtod Z