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