Esercizi Interfacce PHP
Ecco degli esercizi semplici con soluzione per praticare le basi delle interfacce e programmazione ad oggetti in PHP.
Esercizio 1
Creare un'interfaccia "FormaGeometrica" con un metodo "calcolaArea()". Creare una classe "Quadrato" che implementa l'interfaccia e implementa il metodo "calcolaArea()" per calcolare l'area del quadrato.
<?phpinterface FormaGeometrica { public function calcolaArea();}
class Quadrato implements FormaGeometrica { private $lato;
public function __construct($lato) { $this->lato = $lato; }
public function calcolaArea() { return $this->lato * $this->lato; }}
$quadrato = new Quadrato(5);echo "Area del quadrato: " . $quadrato->calcolaArea();?>
Esercizio 2
Creare un'interfaccia "Suonabile" con un metodo "suona()". Creare una classe "Chitarra" che implementa l'interfaccia e implementa il metodo "suona()" per far suonare la chitarra.
<?phpinterface Suonabile { public function suona();}
class Chitarra implements Suonabile { public function suona() { return "La chitarra sta suonando!"; }}
$chitarra = new Chitarra();echo $chitarra->suona();?>
Esercizio 3
Creare un'interfaccia "Volante" con un metodo "volare()". Creare una classe "Aereo" che implementa l'interfaccia e implementa il metodo "volare()" per far volare l'aereo.
<?phpinterface Volante { public function volare();}
class Aereo implements Volante { public function volare() { return "L'aereo sta volando!"; }}
$aereo = new Aereo();echo $aereo->volare();?>
Esercizio 4
Creare un'interfaccia "Animale" con un metodo "emettiVerso()". Creare una classe "Cane" che implementa l'interfaccia e implementa il metodo "emettiVerso()" per far abbaiare il cane.
<?phpinterface Animale { public function emettiVerso();}
class Cane implements Animale { public function emettiVerso() { return "Woof woof!"; }}
$cane = new Cane();echo $cane->emettiVerso();?>
Esercizio 5
Creare un'interfaccia "Logger" con un metodo "log($messaggio)". Creare una classe "FileLogger" che implementa l'interfaccia e implementa il metodo "log($messaggio)" per scrivere il messaggio su un file di log.
<?phpinterface Logger { public function log($messaggio);}
class FileLogger implements Logger { public function log($messaggio) { $file = fopen("log.txt", "a"); fwrite($file, $messaggio . "\n"); fclose($file); }}
$logger = new FileLogger();$logger->log("Messaggio di log");?>
Esercizio 6
Creare un'interfaccia "SchedaAudio" con un metodo "riproduciAudio()". Creare una classe "SchedaAudioUSB" che implementa l'interfaccia e implementa il metodo "riproduciAudio()" per riprodurre l'audio attraverso una scheda audio USB.
<?phpinterface SchedaAudio { public function riproduciAudio();}
class SchedaAudioUSB implements SchedaAudio { public function riproduciAudio() { return "L'audio viene riprodotto attraverso la scheda audio USB."; }}
$schedaAudio = new SchedaAudioUSB();echo $schedaAudio->riproduciAudio();?>
Esercizio 7
Creare un'interfaccia "Database" con metodi "connetti()", "eseguiQuery($query)" e "chiudiConnessione()". Creare una classe "MySQLDatabase" che implementa l'interfaccia e implementa i metodi per la connessione, l'esecuzione delle query e la chiusura della connessione a un database MySQL.
<?phpinterface Database { public function connetti(); public function eseguiQuery($query); public function chiudiConnessione();}
class MySQLDatabase implements Database { public function connetti() { // Connessione al database MySQL }
public function eseguiQuery($query) { // Esecuzione della query }
public function chiudiConnessione() { // Chiusura della connessione al database }}
$database = new MySQLDatabase();$database->connetti();$database->eseguiQuery("SELECT * FROM utenti");$database->chiudiConnessione();?>
Esercizio 8
Creare un'interfaccia "Autenticabile" con un metodo "autentica($username, $password)". Creare una classe "Utente" che implementa l'interfaccia e implementa il metodo "autentica($username, $password)" per autenticare un utente.
<?phpinterface Autenticabile { public function autentica($username, $password);}
class Utente implements Autenticabile { public function autentica($username, $password) { // Logica di autenticazione }}
$utente = new Utente();$utente->autentica("admin", "password");?>
Esercizio 9
Creare un'interfaccia "Serializable" con metodi "serialize()" e "unserialize($data)". Creare una classe "Oggetto" che implementa l'interfaccia e implementa i metodi per la serializzazione e la deserializzazione dell'oggetto.
<?phpinterface Serializable { public function serialize(); public function unserialize($data);}
class Oggetto implements Serializable { public function serialize() { // Serializzazione dell'oggetto }
public function unserialize($data) { // Deserializzazione dei dati }}
$oggetto = new Oggetto();$serializedData = $oggetto->serialize();$oggetto->unserialize($serializedData);?>
Esercizio 10
Creare un'interfaccia "Pagabile" con un metodo "calcolaTotale()". Creare una classe "Ordine" che implementa l'interfaccia e implementa il metodo "calcolaTotale()" per calcolare il totale dell'ordine.
<?phpinterface Pagabile { public function calcolaTotale();}
class Ordine implements Pagabile { private $prodotti;
public function __construct($prodotti) { $this->prodotti = $prodotti; }
public function calcolaTotale() { // Calcolo del totale dell'ordine }}
$prodotti = array(/* ... */);$ordine = new Ordine($prodotti);echo "Totale dell'ordine: " . $ordine->calcolaTotale();?>