logo

Extra Block Types (EBT) - Nuova esperienza con Layout Builder❗

Extra Block Types (EBT) - tipi di blocchi stilizzati e personalizzabili: Slideshows, Tabs, Cards, Accordion e molti altri. Impostazioni integrate per sfondo, DOM Box, plugin javascript. Vivi oggi il futuro della costruzione dei layout.

Demo moduli EBT Scarica moduli EBT

❗Extra Paragraph Types (EPT) - Nuova esperienza con Paragraphs

Extra Paragraph Types (EPT) - insieme di moduli basati su paragrafi in modo analogo.

Demo moduli EPT Scarica moduli EPT

Scorri

Lezioni di PHP - Lezione 13 - Fondamenti della programmazione orientata agli oggetti (OOP).

09/10/2025, by Ivan

Nelle lezioni precedenti abbiamo già visto diversi tipi di dati in PHP: booleani, interi, numeri con la virgola, stringhe e array. In questa lezione parleremo di un altro tipo di dato disponibile in PHP: l’oggetto.
Gli oggetti assomigliano in parte agli array, poiché possono contenere al loro interno vari tipi di dati: numeri, testo, array e persino altri oggetti.

Quando un oggetto contiene dei dati, questi vengono chiamati proprietà (o campi) dell’oggetto. Gli oggetti possono inoltre contenere funzioni al proprio interno — queste funzioni vengono chiamate metodi.

Tuttavia, rispetto agli array, gli oggetti hanno due grandi differenze:

1. Gli oggetti possono contenere metodi.

I metodi sono funzioni invocate a nome dell’oggetto. L’associazione di funzioni a un oggetto definisce quali operazioni l’oggetto può eseguire e quali operazioni possono essere eseguite su di esso.

2. Gli oggetti vengono creati a partire da classi.

Prima di creare un oggetto, dobbiamo definire una classe. In una classe descriviamo quali campi e metodi avrà l’oggetto. Questo ci permette di stabilire la struttura degli oggetti e di capire più facilmente quali dati devono contenere e quali operazioni possono svolgere. Quando creiamo un oggetto a partire da una classe, possiamo inizializzarlo con dei valori predefiniti, in modo che ogni nuovo oggetto non sia vuoto.

Gli oggetti sono probabilmente il contenitore più comodo per memorizzare i dati. In PHP ci aiutano a rappresentare elementi del mondo reale. Per esempio, se abbiamo un database che conserva informazioni sui libri, ogni libro ha un autore, un numero di pagine, una casa editrice, un numero di edizione, una recensione e così via. Per gestire questi dati in modo più chiaro, possiamo creare una classe Libro con proprietà come Autore, Numero di pagine, Casa editrice, Numero di edizione, Recensione, ecc. In questo modo i nostri oggetti diventano molto simili a veri libri. È particolarmente utile perché i dati dei nostri siti vengono memorizzati in tabelle con campi, quindi possiamo usare i nomi delle tabelle come nomi delle classi e i nomi dei campi come nomi delle proprietà. Lavorare con i dati diventa così molto più semplice.

Vediamo ora con degli esempi la differenza tra array e oggetti.

Funzionalità di PHP 5.2 e versioni successive

Iniziamo definendo una classe per i nostri oggetti. Nota che la classe è al singolare, mentre gli oggetti sono al plurale: questo perché da una singola classe possiamo creare molti oggetti.

<?php
class book{

}
?>

Con la parola chiave class definiamo una classe per i futuri oggetti. Ora creiamo gli oggetti:

<?php
class book{
  
}

$book1 = new book;
$book2 = new book;
print_r($book1);
print_r($book2);
?>

Con la parola chiave new creiamo nuovi oggetti della classe book. Ogni oggetto della classe viene chiamato istanza della classe. In questo esempio abbiamo due istanze della classe book: $book1 e $book2. Abbiamo anche aggiunto print_r() per mostrare sullo schermo il contenuto delle variabili, e vediamo:

PHP objects

Come puoi notare, PHP indica da quale classe è stato creato l’oggetto. Se l’oggetto contenesse dei dati, anch’essi verrebbero mostrati. Ora aggiungiamo dei dati. Per prima cosa dobbiamo definire le proprietà della classe. A partire da PHP 5.2, le proprietà si definiscono con una delle parole chiave public, protected o private (è ancora supportato anche il vecchio var).

public — definisce proprietà e metodi pubblici, accessibili anche al di fuori della classe. Usiamo questo modificatore per i nostri dati del libro.

protected — definisce proprietà e metodi protetti, accessibili solo all’interno della classe e delle sue sottoclassi. Se proviamo a richiamarli da un oggetto, otterremo un errore. Approfondiremo protected quando parleremo di ereditarietà.

private — definisce proprietà e metodi privati, accessibili solo all’interno della classe stessa e non nelle classi derivate.

Per ora, per semplicità, definiamo tutto come public:

class book{
  public $author;
  public $numberOfPages;
  public $year;
  public $publishingOffice;
  public $editionNumber;
}

Ora possiamo accedere a queste proprietà attraverso le istanze della classe:

class book{
  public $author;
  public $numberOfPages;
  public $year;
  public $publishingOffice;
  public $editionNumber;
}

$book1 = new book;
$book1->author = 'Abramenko I.A';
$book1->numberOfPages = 192;
$book1->year = 2013;
$book1->publishingOffice = 'Moscow';
$book1->editionNumber = 1;
$book2 = new book;
print '<pre>';
print_r($book1);
print_r($book2);
print '</pre>';

Otteniamo così un oggetto riempito di dati e un altro vuoto:

PHP oggetti

Ora dovrebbe essere chiaro come assegnare valori agli oggetti. Passiamo ai metodi della classe. I metodi sono funzioni chiamate sul nome dell’oggetto o della classe. Aggiungiamo metodi per restituire i valori delle proprietà:

<?php

class book{
  public $author;
  public $numberOfPages;
  public $year;
  public $publishingOffice;
  public $editionNumber;
  public function getAuthor(){
    return $this->author;
  }
  public function getNumberOfPages(){
    return $this->numberOfPages;
  }
  public function getYear(){
    return $this->year;
  }
  public function getPublishingOffice(){
    return $this->publishingOffice;
  }
  public function getEditionNumber(){
    return $this->editionNumber;
  }
  
}

$book1 = new book;
$book1->author = 'Abramenko I.A';
$book1->numberOfPages = 192;
$book1->year = 2013;
$book1->publishingOffice = 'Moscow';
$book1->editionNumber = 1;
print '<pre>';
print $book1->getAuthor() . '<br />';
print $book1->getNumberOfPages() . '<br />';
print $book1->getYear() . '<br />';
print $book1->getPublishingOffice() . '<br />';
print $book1->getEditionNumber() . '<br />';
print '</pre>';

?>

In questo modo possiamo accedere ai dati tramite metodi invece che direttamente dalle proprietà. Nota la variabile $this: essa rappresenta l’istanza corrente della classe. Se l’istanza è $book1, allora $this fa riferimento a $book1 all’interno della classe. Fuori dalla classe, $this non è disponibile.

Aggiungiamo ora due metodi per visualizzare i dati del libro in due modi diversi: in una tabella e con div non formattati.

Abbiamo scritto abbastanza codice, ma come puoi vedere è facile da leggere. Ah, ci siamo dimenticati del titolo del libro! Aggiungiamo la proprietà name e il metodo per restituirla:

PHP oggetto

Funzionalità di PHP 5.1.3 e versioni precedenti

Nelle vecchie versioni di PHP, per definire le proprietà all’interno di una classe si usa la parola var.

<?php
class myClass{

}
?>

Ora vediamo un esempio pratico con array e funzioni, e come trasformarlo in un approccio orientato agli oggetti. Confronteremo l’approccio procedurale e quello OOP per mostrare i vantaggi della programmazione a oggetti.

Come vedi, le classi permettono di raggruppare dati e funzioni in un’unica entità logica. Lavorare con oggetti rende il codice più strutturato, leggibile e vicino ai concetti del mondo reale. Nelle prossime lezioni approfondiremo la programmazione orientata agli oggetti in PHP.