V tej vadnici se bomo naučili vmesnika v PHP.
Kaj je vmesnik v OOP?
- Vmesnik je razred, ki vsebuje samo abstraktne metode.
- Z uporabo razreda vmesnika lahko določimo, katere metode naj razred izvaja, ki razširijo vmesnik.
- Za razliko od abstraktnega razreda vam ni treba pisati povzetkov z metodami, ker ima vmesnik lahko samo abstraktne metode.
- vmesnik ključna beseda se uporablja za razglasitev razreda vmesnika. Poglejte naslednjo sintakso vmesniškega razreda v PHP.
<?php
interface InterfaceName {
public function someMethod1();
public function someMethod2($name, $color);
public function someMethod3() : string;
}
?>
Čeprav so abstraktni razredi in vmesniki precej podobni, se med seboj logično razlikujejo.
Razlika med vmesniškimi in abstraktnimi razredi v PHP
Razred vmesnika | Povzetek |
Ne more vsebovati lastnosti | Lahko vsebuje lastnosti |
Vse metode so abstraktne in ključna beseda abstraktna ni potrebna skupaj z metodami. | Con vsebuje tako abstraktne kot neabstraktne metode. Abstraktna ključna beseda je potrebna za razglasitev abstraktne metode. |
Razred lahko implementira vmesnik skupaj z dedovanjem od drugega razreda. To pomeni, da lahko podrejeni razred hkrati izvaja vmesnik. | Otroški razred (podedovan od drugega razreda) ne more izvajati abstraktnega razreda. |
Vse metode morajo biti javne glede na modifikatorje dostopa. | Metode so lahko javne ali zaščitene glede na modifikatorje dostopa. |
Primer vmesnika v PHP
vmesnik ključna beseda se uporablja za deklariranje vmesnika v PHP. Poglejte si naslednjo izvedbo vmesnika v PHP.
<?php
interface Unit {
public function standard_unit();
}
class Weight implements Unit {
public function standard_unit() {
echo "Kg";
}
}
$weight= new Weight();
$weight->standard_unit();
?>
- V zgornjem primeru. ustvarimo vmesniški razred Unit, ki vsebuje metodo standard_unit.
- Nato ustvarimo še en razred teža ki izvaja enota vmesnik in v njem definira metodo standard_unit.
- Iz zgornjega primera lahko vidimo, da lahko razred, ki uporablja vmesnik, preglasi svojo metodo in jo lahko uporablja na svoj način. Recimo, da imamo drugo dolžino razreda, lahko uporablja metodo standard_unit na svoj način.
- Lahko napišemo logiko, ki bo delovala za vse fizikalne količine, ki imajo enote SI. Poglejte si naslednji primer.
<?php
// Interface definition
interface Unit {
public function standard_unit();
}
// Class definitions
class Weight implements Unit {
public function makeSound() {
echo " kg";
}
}
class Length implements Unit {
public function standard_unit() {
echo " meter";
}
}
class Temperature implements Unit {
public function standard_unit() {
echo " celcius";
}
}
// Create a list of Physical Quanitites
$weight = new Weight();
$length = new Length();
$temperature = new Temperature();
$quantities= array($weight, $length, $temperature);
// Tell the quantities to use its standard unit
foreach($quantities as $quantities) {
$quantitiy->standard_unit();
}
?>
- V zgornjem primeru ustvarimo podobne razrede kot v prejšnjem primeru.
- Razredi teže, dolžine in temperature izvajajo isti vmesnik in lahko uporabljajo metodo standard_unit na svoj način. Torej naredimo matriko objektov teh razredov in jih enega za drugim zavijemo, da razvrstimo metodo standard_unit.