Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Verso PHP 5: (OOP) Costruttori, distruttori e metodi magici

L'evoluzione del supporto object oriented potenziato in PHP 5.
L'evoluzione del supporto object oriented potenziato in PHP 5.
Link copiato negli appunti

Eccoci qua con una nuova puntata della serie

[!] Ci sono problemi con l'autore. Controllare il mapping sull'Author Manager

.
Dopo il

[!] Ci sono problemi con l'autore. Controllare il mapping sull'Author Manager

e le

[!] Ci sono problemi con l'autore. Controllare il mapping sull'Author Manager

, è l'ora di affrontare un altro aspetto profondamento mutato di PHP a partire dalla 5 major release: il supporto alla programmazione object oriented.

In parte l'argomento è già  stato introdotto, ad esempio con la segnalazione dell'operatore instanceof, molto Java style, che ora prende il posto della più classica funzione is_a().
Ma questo è nulla in confronto alle reali novità  del linguaggio, per le quali potrebbe non bastare un solo libro. Vedrà di riassumere quanto possibile in un paio di post!

Come sempre, approfondimenti sono disponibili nella guida

[!] Ci sono problemi con l'autore. Controllare il mapping sull'Author Manager

.

Costruttore e distruttore

Cominciamo dalla base. Un oggetto va creato e, qualche volta, distrutto... no?
In PHP 4 il concetto di costruttore era affidato ad una funzione che doveva avere lo stesso nome della classe. Se la funzione era presente, l'interprete la eseguiva in automatico alla creazione di un nuovo oggetto.

class Test() {
    // costruttore
    function Test() {
        //
    }
}

In PHP 5 il concetto di costruttore si evolve con l'introduzione della funzione __construct().
In aggiunta, appare per la prima volta la funzione __destruct() che viene richiamata ogni volta che un oggetto viene implicitamente o esplicitamente distrutto.

class Test() {
    // costruttore
    function __construct() {
        //
    }
    // distruttore
    function __destruct() {
        //
    }
}

Metodi Magici

In aggiunta a questi due metodi, esistono alcuni altri

[!] Ci sono problemi con l'autore. Controllare il mapping sull'Author Manager

degni di menzione.
Alcuni di essi non sono una novità  per chi programma con altri linguaggi ad oggetti.

àˆ il caso, ad esempio, del metodo __toString() che serve per fornire una conversione stringa dell'oggetto corrente.
Un oggetto, infatti, è un tipo di dato complesso, non lineare.
Immaginate il seguente esempio

class User() {
    private $_firstName;
    private $_lastName;
    public function __construct($firstName, $lastName) {
        $this->_firstName = $firstName;
        $this->_lastName = $lastName;
    }
    public function __toString() {
        return $this->_firstName . ' ' . $this->_firstName;
    }
}
$u = new User('Simone', 'Carletti');
// cosa succede qui?
print($u);

In questo caso, è stato deciso che un tentativo di stampare l'oggetto debba fornire come output il nome dell'utente seguito dal suo cognome.
Ogni classe può sovrascrivere il metodo della superclasse fornendo ulteriori specifiche all'output.

Altre funzioni utili sono

[!] Ci sono problemi con l'autore. Controllare il mapping sull'Author Manager

, metodo richiamato nel tentativo di clonare un oggetto, __set() e __get() richiamati ogni qual volta che una funzione setter o getter viene richiamata e tale funzione non è stata precedentemente dichiarata.
Un eccellente esempio dell'implementazione di __set() e __get() è la libreria

[!] Ci sono problemi con l'autore. Controllare il mapping sull'Author Manager

.

Questo articolo contiene link di affiliazione: acquisti o ordini effettuati tramite tali link permetteranno al nostro sito di ricevere una commissione nel rispetto del codice etico. Le offerte potrebbero subire variazioni di prezzo dopo la pubblicazione.

Ti consigliamo anche