Esercitazione PHP

PHP HOME Introduzione a PHP Installazione PHP Sintassi PHP Commenti PHP Variabili PHP PHP Eco/Stampa Tipi di dati PHP Stringhe PHP Numeri PHP PHP matematica Costanti PHP Operatori PHP PHP Se...Altro...Altro Passaggio PHP Ciclo PHP Funzioni PHP Array PHP Superglobali PHP RegEx PHP

Moduli PHP

Gestione dei moduli PHP Convalida del modulo PHP Modulo PHP richiesto URL/e-mail del modulo PHP Modulo PHP completo

PHP avanzato

Data e ora PHP PHP Include Gestione dei file PHP Apri/Leggi file PHP Creazione/scrittura di file PHP Caricamento file PHP Cookie PHP Sessioni PHP Filtri PHP Filtri PHP avanzati Funzioni di callback PHP PHP JSON Eccezioni PHP

PHP OOP

PHP Che cos'è OOP Classi/Oggetti PHP Costruttore PHP PHP distruttore Modificatori di accesso PHP Ereditarietà PHP Costanti PHP Classi astratte PHP Interfacce PHP Tratti PHP Metodi statici PHP Proprietà statiche PHP Spazi dei nomi PHP Iterabili PHP

Database MySQL

Database MySQL MySQL Connect MySQL Crea DB MySQL Crea tabella Dati di inserimento MySQL MySQL Ottieni l'ultimo ID MySQL inserisce più MySQL preparato MySQL Seleziona dati MySQL dove MySQL Ordina per MySQL Elimina dati Dati di aggiornamento MySQL Dati limite MySQL

PHP XML

Parser XML PHP Analizzatore PHP SimpleXML PHP SimpleXML - Ottieni PHP XML espatriato PHP XML DOM

PHP - AJAX

Introduzione all'Ajax AJAX PHP Database AJAX XML AJAX Ricerca in tempo reale AJAX Sondaggio AJAX

Esempi PHP

Esempi PHP compilatore PHP Quiz PHP Esercizi PHP Certificato PHP

Riferimento PHP

Panoramica di PHP matrice PHP Calendario PHP Data PHP Directory PHP Errore PHP Eccezione PHP File system PHP Filtro PHP PHP FTP PHP JSON Parole chiave PHP PHP Libxml Posta PHP PHP matematica PHP Varie PHP MySQLi Rete PHP Controllo dell'output PHP RegEx PHP PHP SimpleXML Flusso PHP Stringa PHP Gestione delle variabili PHP Analizzatore XML PHP Zip PHP Fuso orario PHP

PHP OOP - Interfacce


PHP - Cosa sono le interfacce?

Le interfacce consentono di specificare quali metodi dovrebbe implementare una classe.

Le interfacce semplificano l'utilizzo di una varietà di classi diverse allo stesso modo. Quando una o più classi utilizzano la stessa interfaccia, si parla di "polimorfismo".

Le interfacce sono dichiarate con la interfaceparola chiave:

Sintassi

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

PHP - Interfacce e classi astratte

L'interfaccia è simile alle classi astratte. La differenza tra interfacce e classi astratte sono:

  • Le interfacce non possono avere proprietà, mentre le classi astratte possono
  • Tutti i metodi di interfaccia devono essere pubblici, mentre i metodi di classe astratta sono pubblici o protetti
  • Tutti i metodi in un'interfaccia sono astratti, quindi non possono essere implementati nel codice e la parola chiave abstract non è necessaria
  • Le classi possono implementare un'interfaccia ereditando contemporaneamente da un'altra classe

PHP - Utilizzo delle interfacce

Per implementare un'interfaccia, una classe deve utilizzare la implementsparola chiave.

Una classe che implementa un'interfaccia deve implementare tutti i metodi dell'interfaccia.

Esempio

<?php
interface Animal {
  public function makeSound();
}

class Cat implements Animal {
  public function makeSound() {
    echo "Meow";
  }
}

$animal = new Cat();
$animal->makeSound();
?>

Dall'esempio sopra, diciamo che vorremmo scrivere un software che gestisca un gruppo di animali. Ci sono azioni che tutti gli animali possono fare, ma ogni animale lo fa a modo suo.

Usando le interfacce, possiamo scrivere del codice che può funzionare per tutti gli animali anche se ogni animale si comporta in modo diverso:

Esempio

<?php
// Interface definition
interface Animal {
  public function makeSound();
}

// Class definitions
class Cat implements Animal {
  public function makeSound() {
    echo " Meow ";
  }
}

class Dog implements Animal {
  public function makeSound() {
    echo " Bark ";
  }
}

class Mouse implements Animal {
  public function makeSound() {
    echo " Squeak ";
  }
}

// Create a list of animals
$cat = new Cat();
$dog = new Dog();
$mouse = new Mouse();
$animals = array($cat, $dog, $mouse);

// Tell the animals to make a sound
foreach($animals as $animal) {
  $animal->makeSound();
}
?>

Esempio spiegato

Cat, Dog e Mouse sono tutte classi che implementano l'interfaccia Animal, il che significa che tutte sono in grado di emettere un suono usando il makeSound()metodo. Per questo motivo, possiamo scorrere tutti gli animali e dire loro di emettere un suono anche se non sappiamo che tipo di animale sia ciascuno.

Poiché l'interfaccia non dice alle classi come implementare il metodo, ogni animale può emettere un suono a modo suo.