Beth yw Dosbarth Haniaethol yn PHP?

Cysonion yn PHP OOP
rhyngwyneb php yn erbyn dosbarth haniaethol

In this comprehensive article, we will go deep into the realm of PHP abstract classes. This article will offer you with a full overview of how to utilize abstract classes in your PHP development projects, from comprehending the principles to examining the syntax and implementation. This article will provide you with the knowledge and abilities to successfully work with abstract classes in your code, whether you are a newbie or an experienced developer.

Mae dosbarth haniaethol yn cynnwys datgan dulliau ond nid eu diffiniad. Dim ond eu henwau sy'n cynnwys. Cyfrifoldeb y dosbarth plant yw diffinio'r dulliau hyn.

Beth yw dull haniaethol?

Mae dosbarth haniaethol yn ddull o ddosbarth haniaethol a ddatganir gan ddefnyddio geiriau allweddol haniaethol ac nad yw'n cynnwys y corff. Fe'i diffinnir gan ddosbarth y plentyn.

  • haniaethol defnyddir allweddair i ddatgan dosbarth neu ddull haniaethol.
  • Rhaid i ddosbarth haniaethol gynnwys o leiaf un dull haniaethol. Fodd bynnag, gall hefyd gynnwys dulliau an-haniaethol hefyd.

Cystrawen

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

Beth yw rheolau dosbarth haniaethol yn PHP?

  • Rhaid i ddosbarth haniaethol gynnwys o leiaf un dull haniaethol. Fodd bynnag, gall gynnwys dulliau an-haniaethol hefyd.
  • Pan fydd plentyn o'r enw yn etifeddu'r dosbarth rhiant haniaethol, rhaid iddo ddiffinio dulliau haniaethol dosbarth rhiant gyda'r un enw.
  • Wrth ddiffinio'r dulliau asbtract yn y dosbarth plant, dylid ei ddiffinio gydag addasydd mynediad llai cyfyngedig. Er enghraifft, os yw'r dosbarth rhiant yn cynnwys y dull haniaethol sydd ganddo diogelu addasydd mynediad. Felly, pan fydd y dosbarth plentyn yn diffinio'r dull hwn, dylai gadw ei addasydd mynediad fel y naill neu'r llall diogelu or cyhoeddus. Ni all ei osod i preifat, gan ei fod yn fwy cyfyngedig na'r gwarchodedig.
  • Rhaid i'r dosbarth plentyn sy'n diffinio'r dull haniaethol basio'r nifer cyfartal o ddadleuon fel y nodir yn y dyfarniad yn y dosbarth asbtract rhiant. Fodd bynnag, gall y dosbarth plant gael dadleuon dewisol / ychwanegol heblaw'r rhai sy'n ofynnol.

Enghraifft o ddosbarth Haniaethol yn PHP

Esboniad o'r enghraifft uchod

<!-- wp:code -->
<pre class="wp-block-code"><code><?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();

?></code></pre>
<!-- /wp:code -->
  • Yn yr enghraifft uchod, rydyn ni'n creu dosbarth haniaethol Beicio mae hynny'n cynnwys dull haniaethol cyflwyno.
  • Rydyn ni'n creu dau ddosbarth i blant Honda ac Suzuki sy'n ymestyn y dosbarth haniaethol ac yn diffinio'r dull cyflwyno.
  • Rydyn ni'n creu gwrthrychau y dosbarthiadau hyn ac yn galw'r dull cyflwyno gan ddefnyddio eu gwrthrychau. Mae'r dull cyflwyno yn gweithio yn unol â'r gweithredu a roddir gan ei ddosbarth cyfatebol.

Enghraifft o ddosbarth haniaethol gyda dadleuon ychwanegol mewn dull yn drech na hynny

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

Esboniad o'r enghraifft uchod

  • Mae rhesymeg sylfaenol yr enghraifft uchod fel yr enghraifft flaenorol. Fodd bynnag, rydym yn trosglwyddo dadl ychwanegol i'r swyddogaeth yn y dull cyflwyno o Suzuki dosbarth.
  • Gan ein bod wedi diffinio'r rheol yn gynharach yn y tiwtorial hwn, rhaid i addasydd mynediad y dosbarth plentyn wrth weithredu dull haniaethol y dosbarth rhiant fod yn llai na'r hyn a nodwyd yn y dosbarth rhiant ar gyfer datgan y dull hwn. Felly, mae'r ddau ddosbarth plant yn defnyddio addasydd mynediad cyhoeddus i ddiffinio'r dull cyflwyno.
  • Ceisiwch ddiffinio'r swyddogaeth gydag addasydd mynediad preifat, bydd yn cynhyrchu gwall.

Nodyn: Nid yw'r dosbarth haniaethol yn cynnwys unrhyw ddull lluniwr. Felly, ni allwn greu'r enghraifft o ddosbarth haniaethol.

Dogfennaeth tynnu dosbarth PHP 8 dogfennaeth swyddogol.

Cysonion yn PHP OOP
rhyngwyneb php yn erbyn dosbarth haniaethol
en English
X
Sgroliwch i'r brig