Le Interfacce - OOP in PHP

Le Interfacce - OOP in PHP

Cosa sono le interfacce?

Le interfacce sono un meccanismo per definire un contratto che una classe deve soddisfare. In altre parole, un'interfaccia definisce un insieme di metodi che una classe deve implementare. Un'interfaccia non fornisce alcuna implementazione dei metodi, ma solo una specifica di quali metodi una classe che implementa quell'interfaccia deve fornire.

In breve: Un'interfaccia contiene dei metodi che la classe deve implementare, ma non dice come implementarli. Essa non può essere invocata direttamente, ma ha bisogno di essere implementata in una classe.

Sintassi di un interfaccia

Per creare un interfaccia dobbiamo usare la keyword interface

interface NomeInterfaccia {
  public function metodo1();
  public function metodo2($parametro1, $parametro2);
  // ...
}

Implementazione di un interfaccia

Per implementare un interfaccia dobbiamo usare la keyword implements seguita dal nome dell'interfaccia.

class NomeClasse implements NomeInterfaccia {
  public function metodo1() {
    // Implementazione del metodo 1
  }
  public function metodo2($parametro1, $parametro2) {
    // Implementazione del metodo 2
  }

Esempio utilizzando classi e metodi astratti

<?php
// dichiariamo l'interfaccia con la keyword interface.
// Ricorda che interface non può essere invocata, serve solo per creare classi che devono implementare
// i metodi contenuti al suo interno
interface Veicolo{
    public function accelerare();
    public function frenare(int|float $pressionePedale, int|float $tempoFrenata);
}

interface Aereo {
    public function decollare();
    public function atterrare();
    public function volare($destinazione);
  }

// implementazione dell'interfaccia con la keyword implements e successiva invocazione delle due funzioni necessarie.
class MyCar implements Veicolo
{
    public function accelerare(){
        return "Stai Accelerando";
    }

    public function frenare($pressionePedale,$tempoFrenata){
        return "Sei riuscito a frenare in " . $tempoFrenata . " secondi, con una pressione di " . $pressionePedale;
    }
}

// creazione di una classe che implementa DUE interfacce
class MyAereo implements Veicolo, Aereo
{
    public function accelerare(){
        return "Stai Accelerando";
    }

    public function frenare($pressionePedale,$tempoFrenata){
        return "Stai frenando con una pressione di " . $pressionePedale . " in " . $tempoFrenata . " secondi.";
    }

    public function decollare(){
        return "Sei appena decollato";
    }
    public function atterrare(){
        return "Sei appena atterrato";
    }
    public function volare($destinazione){
        return "La tua destinazione è: " . $destinazione;
    }
}

$ferrari = new MyCar();
echo $ferrari->frenare(2.5,7) . "\n";

$mioAereo = new MyAereo();
echo $mioAereo->decollare() . " " . $mioAereo->volare("Minorca");

Qual'è la differenza tra classi astratte e interfacce?

La principale differenza tra le interfacce e le classi astratte è che le interfacce non forniscono alcuna implementazione dei metodi, mentre le classi astratte possono fornire alcune implementazioni. In altre parole, le interfacce sono solo un contratto che deve essere rispettato, mentre le classi astratte forniscono una parte dell'implementazione che può essere condivisa tra le sottoclassi. Inoltre, una classe può implementare più interfacce, ma può ereditare solo una classe astratta.

Scritto da Donato Pirolo

Ciao, sono Donato, frontend developer con una smisurata passione per la SEO. Creo strumenti ad hoc per aiutare aziende e professionisti ad essere cercati sul web e trovare clienti.

Potrebbero interessarti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Copyright © 2023
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram