J'ai une question sur un comportement étrange.Appeler __call au lieu de __callstatic dans la même classe, pas si appeler une autre classe
Regardez ce code:
class User
{
public function can($name) {
return call_user_func(array($name, 'test'));
}
public static function __callStatic($name, $args) {
return 'User::__callStatic';
}
public function __call($name, $args) {
return 'User::__call';
}
}
class Foo
{
public static function __callStatic($name, $args) {
return 'Foo::__callStatic';
}
public function __call($name, $args) {
return 'Foo::__call?';
}
}
$u = new User();
var_dump($u->can('User'));
var_dump($u->can('Foo'));
Les résultats de la première décharge var est: "User :: __ appeler" Et le second: "Foo :: __ callStatic"
Pourquoi le premier n'appelle pas la fonction __callStatic? PS: Je regarde d'autres sujets, mais je n'ai trouvé aucune explication.
Merci
ce code fonctionne: https://3v4l.org/E1gKl – Edwin
@Edwin I savoir :) Ce n'est pas ma question, je m'attends à avoir "User :: __ callStatic" pour le premier var vidage –
J'ai posté en réponse à d'autres commentaires qui sont maintenant supprimés – Edwin