Chaque classe anonyme est différente
<?php
print get_class($c = new class() {});
//class@anonymousphp-wasm run script:3$0
$d = new class() {};
var_dump($c instanceof $d);
// false!
interface i {}
$e = new class() implements i {};
var_dump($e instanceof i);
// true
function foo() {
return new class() {};
}
$x = foo();
var_dump(foo() instanceof $x);
// syntax error !
// var_dump($x instanceof foo());
?>
Les classes anonymes n’ont pas de nom explicite, pourtant PHP en utilise un en interne. Ce nom est construit à partir de la localisation de la définition de la classe dans le code.
Cela signifie que deux objets de classe anonyme (sic), créés avec le même code, mais à des endroits différents dans le code, sont considérés comme de types différents par PHP.
En revanche, lorsque le même morceau de code produit l’objet de classe anonyme, il est considéré comme appartenant à la même classe.
Notez que la syntaxe foo() instanceof $x est valide, mais $x instanceof foo() ne l’est pas. Le second opérande de instanceof est un peu capricieux et interdit de nombreuses expressions : c’est le cas d’une simple affectation.
See Also
- Anonymous and different [Try me]
PHP Features
- instanceof
- anonymous
- explicit
- name
- php
- class
- definition
- anonymous-class
- object
- type
- syntax
- not
- operand
- expression
- case
- assignation
Last updated: 04 October 2026