Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

get_class() ou ::class ?

<?php

namespace abc;

class def {}

$x = new \ABC\DEF();
print get_class($x);
print PHP_EOL;
print $x::class;
print PHP_EOL;
print DEF::class;
print PHP_EOL;

get_class() et ::class font la même chose : ils retournent le nom de la classe de l’objet fourni. Les nuances sont dans les détails.

get_class() nécessite un objet en argument et émet une TypeError si ce n’est pas le cas. ::class fonctionne à la fois sur des objets et des noms de classe. Ces derniers sont, en substance, des chaînes de caractères, donc ::class fonctionne sur les chaînes.

get_class() nécessite que la classe soit disponible, tandis que ::class se contente de formater le nom de la classe avec la casse interne : cela fonctionne sur un objet, mais pas si le nom de la classe est codé en dur.

Et qui code ses noms de classe en dur avec des chaînes ?

See Also

PHP Features

Last updated: 11 October 2026