⊗ppOpIhOI 36 of 107 menu

Operatore instanceof ed ereditarietà in OOP in PHP

Analizziamo le caratteristiche dell'ereditarietà quando si utilizza l'operatore instanceof. Supponiamo di avere una classe genitore e una classe figlia:

<?php // Classe genitore: class ParentClass { } // Classe figlia: class ChildClass extends ParentClass { } ?>

Creiamo un oggetto della classe figlia:

<?php $obj = new ChildClass; ?>

Controlliamo ora con instanceof se il nostro oggetto appartiene alla classe ParentClass e alla classe ChildClass:

<?php var_dump($obj instanceof ChildClass); // restituirà true var_dump($obj instanceof ParentClass); // restituirà anche true ?>

Come puoi vedere dall'esempio - l'operatore instanceof non distingue tra classi genitore e classi figlie durante il controllo.

Non confonderti - se l'oggetto è effettivamente della classe genitore, allora ovviamente il controllo dell'appartenenza alla classe figlia restituirà false:

<?php $obj = new ParentClass; // oggetto della classe genitore var_dump($obj instanceof ParentClass); // restituirà true var_dump($obj instanceof ChildClass); // restituirà false ?>

Crea una classe User con le proprietà pubbliche name e surname.

Crea una classe Employee che erediti dalla classe User e aggiunga la proprietà salary.

Crea una classe City con le proprietà pubbliche name e population.

Crea 3 oggetti della classe User, 3 oggetti della classe Employee, 3 oggetti della classe City e, in ordine casuale, inseriscili nell'array $arr.

Scorri l'array $arr con un ciclo e visualizza a schermo la colonna delle proprietà name degli oggetti che appartengono alla classe User o a una classe discendente di questa.

Scorri l'array $arr con un ciclo e visualizza a schermo la colonna delle proprietà name degli oggetti che *non* appartengono alla classe User o a una classe discendente di questa.

Scorri l'array $arr con un ciclo e visualizza a schermo la colonna delle proprietà name degli oggetti che appartengono *esattamente* alla classe User, cioè non alla classe City e non alla classe Employee.

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