PHP e OOP: le interfacce

web marketing Umbria

Articoli precedenti sullo stesso tema OOP in PHP nei portali umbriaway:

https://umbriawayinfo.wordpress.com/2019/04/07/programmazione-procedurale-oppure-oop-this-is-the-problem/

https://umbriawaypotenzia.wordpress.com/2019/04/07/php-versione-sette-introdotte-nuove-direttive-per-trasformare-il-linguaggio-in-fortemente-tipicizzato/

https://umbriawaysemplifica.wordpress.com/2019/04/08/ambito-di-visibilita-delle-variabili-in-php-public-protected-private/

https://umbriawaytarget.wordpress.com/2019/04/08/php-oop-magic-method-e-costruttori/

https://umbriawayvalorizza.wordpress.com/2019/04/08/warning-ambito-di-visibilita-publica-delle-classi-encapsulation-e-sicurezza-metodi-getter-e-setter/

https://umbriawayvendita.wordpress.com/2019/04/09/php-e-oop-magic-method-__autoload-ereditarieta-pianificazione-iniziale-con-uml/

https://umbriawaynoir.wordpress.com/2019/04/09/php-e-oop-overriding-e-polimorfismo/

https://umbriawayformazione.wordpress.com/2019/04/09/php-e-oop-membri-statici-e-costanti-all-interno-di-una-classe/

https://umbriawayfocus.wordpress.com/2019/04/09/php-e-oop-classi-astratte/

seo specialist umbriaUna interfaccia si implementa tramite la parola chiave IMPLEMENTS. Nell’ esempio Sedia se la definisco come interfaccia anzichè come classe astratta. Non posso estendere più classi contemporaneamente con PHP (al contrario di altri linguaggi) mentre posso richiamare più interfacce contemporaneamente. I progetti con le interfacce risultano più puliti dal punto di vista concettuale proprio per la sua caratteristica di ereditarietà multipla, per il vincolo di avere un unico padre con l’estensione delle classi, ma le interfacce aggirano l’ostacolo. Il tutto si differenzia per l’uso della parola INTERFACE. I metodi all’ interno di una interfaccia devono essere solo a livello di nome ma non a livello di corpo e di implementazione. Nelle interfacce non posso avere un metodo costruttore e neanche delle proprietà tranne delle costanti. La metafora migliore che spiega l’idea di interfaccia nella programmazione a oggetti PHP è quella del contratto di lavoro che spiega quali sono i termini di servizio, quale è la tua mansione, quante ore settimanali devi fare per essere pagato, quali i minuti di pausa istituzionali previsti etc. L’insieme delle regole che servono per creare una classe che non ha necessariamente un unico padre. Posso quindi richiamare più interfacce dalla classe, ognuna delle quali ha le sue regole con funzioni senza corpo solo dichiarate come da contratto per esempio con una sintassi tipo:

class Ufficio implements Sedia, Materiali {

L’interfaccia é comunque un elemento complesso della OOP e indicata per progetti enterprise. Posso creare una classe che implementa varie interfacce, con questo espediente stipulo una serie di regole con dei metodi che hanno una definizione solo a livello di nome e non a livello di implementazioni, con una sintassi del tipo public function SetPrezzo(), sarà la classe che indicherà che cosa bisogna fare con ciascuno di questi metodi. Come detto è una forma pulita per organizzare meglio il codice di programmazione, soprattutto quando le righe sono abbondanti.

/*

file Prodotto.php

<?php
interface Prodotto {
public function getPrezzo();
public function setPrezzo($prezzo);
public function getQta();
public function setQta($qta);
public function addQta($quantita);
}

file Sedia.php

class Sedia implements Prodotto {
protected $price;
protected $qta;
protected $database;
protected $nome;
protected $modello;
protected $certificazioni;
public function __construct($nome,$modello) {
$this->nome = $nome;
$this->modello = $modello;
}
public function getPrezzo() {
return $this->price;
}
public function setPrezzo($prezzo) {
$this->price = $prezzo;
}
public function getQta() {
return $this->qta;
}
public function setQta($qta) {
$this->qta = $qta;
}
public function addQta($quantita) {
$this->qta += $quantita;
}
public function altezzaSeduta() {
echo “Altezza Seduta”;
}
public function setCertificazioni($cert) {
$this->certificazioni = $cert;
}
}

file index.php

<?php
require_once “classi\Prodotto.php”;
require_once “classi\Sedia.php”;

$nsedia = new Sedia(‘Poltrona per Conferenze’, ‘Eidos’);
$nsedia->setPrezzo(500);
$nsedia->setCertificazioni(‘FSC’);
var_dump($nsedia);

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...