⊗ppOpTrInr 77 of 107 menu

Tratti nella OOP in PHP

Come già sapete, in PHP non è possibile ereditare da più classi contemporaneamente, solo da una. In precedenza abbiamo già visto una soluzione a questo problema: invece dell'ereditarietà, utilizzare oggetti di alcune classi all'interno di altre.

In PHP esiste un altro modo. Consiste nell'utilizzo dei tratti. Un tratto rappresenta un insieme di proprietà e metodi che possono essere inclusi in un'altra classe. In questo modo le proprietà e i metodi del tratto saranno considerati dalla classe come se fossero propri.

La sintassi di un tratto è la stessa di una classe, con l'eccezione che il nome del tratto deve essere dichiarato utilizzando la parola chiave trait.

Non è possibile creare un'istanza di un tratto - i tratti sono destinati solo ad essere collegati ad altre classi. Il collegamento stesso viene effettuato con il comando use, dopo il quale viene specificato, separato da uno spazio, il nome del tratto da collegare. Questo comando viene scritto all'inizio della classe.

Vediamo l'applicazione dei tratti con un esempio pratico. Supponiamo di avere questo tratto Helper, contenente le proprietà private name e age, oltre ai loro getter:

<?php trait Helper { private $name; private $age; public function getName() { return $this->name; } public function getAge() { return $this->age; } } ?>

Supponiamo inoltre di avere questa classe User, nel cui costruttore vengono impostate le proprietà name e age:

<?php class User { public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

Aggiungiamo ora i getter per le proprietà della nostra classe User. Solo che non li scriveremo nella classe stessa, ma ci limiteremo a collegare il tratto Helper, in cui questi metodi sono già implementati:

<?php class User { use Helper; // colleghiamo il tratto public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

Dopo il collegamento del tratto, nella nostra classe appariranno i metodi e le proprietà di questo tratto. Inoltre, ci riferiremo ad essi come se fossero metodi e proprietà della classe stessa:

<?php $user = new User('john', 30); echo $user->getName(); // visualizzerà 'john' echo $user->getAge(); // visualizzerà 30 ?>

Implementate la classe City con le proprietà name, age, population e i relativi getter. Lasciate che la nostra classe utilizzi il tratto Helper che abbiamo già creato per abbreviare il proprio codice.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta