In questa lunga lezione, approfondiremo le complessità delle funzionalità dell'interfaccia di PHP. Da In questo post, esamineremo le differenze e le somiglianze tra due concetti cruciali di PHP: interfacce vs classi astratte. Esamineremo la sintassi e i casi d'uso per ciascuno, nonché i vantaggi e gli svantaggi dell'utilizzo di interfacce e classi astratte nel codice. Alla conclusione di questa sessione, saprai quando utilizzare le interfacce PHP e quando utilizzare le classi astratte, nonché come applicarle nei tuoi progetti di programmazione.
Che cos'è un'interfaccia in OOP?
- Un'interfaccia è una classe che contiene solo metodi astratti.
- Usando la classe dell'interfaccia, possiamo specificare quali metodi una classe dovrebbe implementare per estendere l'interfaccia.
- A differenza della classe astratta, non è necessario scrivere abstract con i metodi perché un'interfaccia può contenere solo metodi astratti.
- interfaccia la parola chiave viene utilizzata per dichiarare una classe di interfaccia. Guarda la seguente sintassi di una classe di interfaccia in PHP.
<?php
interface InterfaceName {
public function someMethod1();
public function someMethod2($name, $color);
public function someMethod3() : string;
}
?>
Sebbene le classi e le interfacce astratte siano abbastanza simili, sono logicamente diverse l'una dall'altra.
Differenza tra le classi Interface e Abstract in PHP
Classe interfaccia | Classe astratta |
Non può contenere proprietà | Può contenere proprietà |
Tutti i metodi sono astratti e la parola chiave astratta non è richiesta insieme ai metodi. | Con contiene metodi sia astratti che non astratti. La parola chiave astratta è necessaria per dichiarare il metodo astratto. |
Una classe può implementare un'interfaccia e ereditare da un'altra classe. Significa che una classe figlio può implementare un'interfaccia allo stesso tempo. | Una classe figlia (ereditata da un'altra classe), non può implementare la classe astratta. |
Tutti i metodi devono essere pubblici rispetto ai modificatori di accesso. | I metodi possono essere pubblici o protetti rispetto ai modificatori di accesso. |
Esempio di interfaccia in PHP
interfaccia la parola chiave viene utilizzata per dichiarare un'interfaccia in PHP. Guarda la seguente implementazione dell'interfaccia in PHP.
<?php
interface Unit {
public function standard_unit();
}
class Weight implements Unit {
public function standard_unit() {
echo "Kg";
}
}
$weight= new Weight();
$weight->standard_unit();
?>
- Nell'esempio sopra. creiamo una classe di interfaccia Unit che contiene un metodo standard_unit.
- Quindi creiamo un'altra classe peso che implementa il Unità interfaccia e definisce in essa il metodo standard_unit.
- Dall'esempio sopra, possiamo vedere che la classe che usa l'interfaccia può sovrascrivere il suo metodo e può usarlo a modo suo. Diciamo che abbiamo un'altra lunghezza della classe, può usare il metodo standard_unit a modo suo.
- Possiamo scrivere la logica che funzionerà per tutte le quantità fisiche che hanno unità SI. Guarda il seguente esempio.
<?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();
}
?>
- Nell'esempio sopra, creiamo classi simili come nell'esempio precedente.
- Le classi di peso, lunghezza e temperatura implementano la stessa interfaccia e possono utilizzare il metodo standard_unit a modo suo. Quindi, creiamo un array degli oggetti di queste classi e li eseguiamo in loop uno per uno per classificare il metodo standard_unit.
Riferimento alla documentazione ufficiale dell'interfaccia PHP 8.