Sconto del 20% su tutti i corsi inserendo nel form il codice SPRING20 | Fino al 30 aprile
Sconto del 20% su tutti i corsi inserendo nel form il codice SPRING20 | Fino al 30 aprile

Guide per aspiranti programmatori

Lezione 21 / 26

L’ereditarietà: creazione di una classe estesa in PHP

Proseguendo il nostro viaggio per imparare php, vediamo, ora, uno dei vantaggi principali della programmazione orientata agli oggetti. Con la programmazione ad oggetti, infatti, abbiamo la possibilità di ridurre la duplicazione del codice (ovvero, la scrittura dello stesso codice più di una volta), grazie all’ aiuto dell’ereditarietà

In ereditarietà abbiamo una classe,  definita “genitore”, con i suoi metodi e le sue proprietà, e una o più classi “figlie”, che possono usufruire del codice della classe genitore. 

Utilizzando l’ereditarietà, possiamo progettare un pezzo di codice riutilizzabile ogni qual volta servisse. PHP consente l’ereditarietà singola; in altri linguaggi di programmazione, tuttavia, è anche possibile utilizzare l’ereditarietà multipla, dove una classe può ereditare metodi e proprietà da più di una classi padre.

In php è utile pensare alla classe figlia come ad una specializzazione della classe genitore.

Creazione di una classe estesa in PHP

Pronto a seguire gli step per la creazione di una classe estesa in php? Bene!
Per rinfrescarci la memoria, andiamo a ribadire come si crea una classe.

class Person {

  //attributi
  public $name;
  public $surname;
  public $age;

  public function __construct($name, $surname, $age) {
    $this->name = $name;
    $this->surname = $surname;
    $this->age = $age;
  }
}
$persona1 = new Person("Mario" , "Rossi" , 26);

Ha funzionato? Perfetto! Proviamo, ora, a creare la prima classe che estende la classe Persona:

class Teacher extends Person {
  public $salary;
  public $subjects = [];

  public function __construct($name , $surname, $age, $subjects, $salary){
    parent::__construct($name, $surname, $age);
    $this->salary = $salary;
    $this->subjects = $subjects;
  }
}

Utilizzando la parola chiave extends ,  stiamo dichiarando che una classe eredita proprietà e metodi da un’altra classePossiamo dire che teacher è una specializzazione di person, infatti ha tutte le caratteristiche di person ma a queste ne aggiunge altre. Vediamo il caso in generale: 

class Person {
  //Codice della classe padre
}

class Teacher extends Person {
  //Codice della classe figlia
}

A questo punto andiamo a creare un’ altra classe figlia, diversa da Docente, ma sempre collegata alla classe padre Persona.

class Student extends Person {
  public $average;
  public $subjects = [];

  public function __construct($name , $surname, $age, $subjects, $average){
    parent::__construct($name, $surname, $age);
    $this->average = $average;
    $this->subjects = $subjects;
  }
}

Le classi figlie possono, così, utilizzare gli attributi ereditati dalla classe padre. Questo è possibile perché nella funzione costruttore della classe figlia, richiamiamo la funzione costruttore della classe padre, passando i parametri che verranno assegnati agli attributi ereditati.

Ricordi quando, nella guida precedente, abbiamo parlato degli access modifiers o indicatori di accessibilità? È giunta l’ora di approfondire.

Se sei stato attento, avrai certamente notato che, fino ad ora, nei nostri esempi, abbiamo impostato gli attributi dichiarati sempre con la keyword “public”. Perché l’abbiamo fatto? La keyword prima del nome dell’attributo indica la visibilità dell’attributo stesso. Per essere più precisi, il punto del programma dove può essere richiamato l’attributo.

Oltre a public, che abbiamo utilizzato finora, ci sono altri due tipi di visibilità: protected e private.
Gli attributi dichiarati public sono visibili e accessibili in tutte le parti del programma, mentre gli attributi dichiarati con protected e private sono visibili solo all’interno della classe stessa.

Vediamo un piccolo esempio:

class Person {
  public $name;
  protected $surname;
  public function __construct($name, $surname) {
    $this->name = $name;
    $this->surname = $surname;
  }
}

$persona1 = new Person("Mario", "Rossi");
var_dump($persona->name);  //Mario
var_dump($persona1->surname);  //Cannot access protected property Person::$surname

Come possiamo vedere, il var_dump() di name restituisce il valore, mentre quello di surname restituisce un errore perchè è una proprietà protected e non vi si può accedere dall’esterno.
Per potervi accedere, abbiamo bisogno di un metodo che acceda alla proprietà dall’interno della classe.

public function tellMeYourSurname(){
  echo "My surname is $this->surname";
}
$persona1->tellMeYourSurname();  //My surname is Rossi

Visto che siamo riusciti ad accedere in lettura, possiamo riuscire ad accedervi anche in scrittura, quindi possiamo modificarlo utilizzando un metodo.

$persona1 = new Person("Mario", "Rossi");

//Public
$persona1->name = "Giorgio";
var_dump($persona1->name);//Giorgio

//Protected
public function changeSurname(){
  $this->surname = "Verdi";
}

$persona1->changeSurname();
$persona1->tellMeYourSurname();  //My surname is Verdi

Gli attributi private, invece, vengono ereditati dalle sottoclassi, ma rimangono, comunque, visibili nella classe in cui sono dichiarati.

Pagamento rateale

Valore della rata: A PARTIRE DA 115 €/mese.

Esempio di finanziamento 

Importo finanziato: € 2440 in 24 rate da € 115 – TAN fisso 9,55% TAEG 12,57% – importo totale del credito € 2841.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/01/2024 al 31/12/2024.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

*In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Pagamento rateale

Valore della rata: A PARTIRE DA 210 €/mese.

Esempio di finanziamento  

Importo finanziato: € 4500 in 24 rate da € 210,03 – TAN fisso 9,68% TAEG 11,97% – importo totale del credito € 5146,55.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/01/2024 al 31/12/2024.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

* In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Contattaci senza impegno per informazioni sul corso

Scopriamo insieme se i nostri corsi fanno per te. Compila il form e aspetta la chiamata di uno dei nostri consulenti.