Méthode ou propriété ?
<?php
$object = new X();
$one = $object->foo(); // X::foo
$two = new $object->foo(); // object Y {}
class X {
public $foo = Y::class;
function foo() {
return __METHOD__;
}
}
class Y {}
?>
La première ligne est un simple appel à la méthode foo, sur un objet dont la classe n’est pas montrée ici : si cela fonctionne, il y a une méthode foo() dans cette classe.
La deuxième ligne est un simple accès à la propriété foo, sur un objet dont la classe n’est pas connue (également) : elle possède une propriété appelée foo. Ensuite, le résultat de cette propriété, qui est normalement une chaîne contenant un nom de classe, ou un autre objet, est instancié sans aucun argument.
La nuance est subtile.
See Also
- method or property? [Try me]
PHP Features
Last updated: 11 October 2026