En PHP5, le type de variables transmises via les méthodes est incertain. Utilisez l'instanceofopérateur pour déterminer si l'instance actuelle peut avoir une telle forme. Lorsque l'instance actuelle utilise instanceof pour la comparer avec la classe actuelle, la classe parent (traçage infini vers le haut) et l'interface implémentée, elle renvoie true.
"instanceof"L'utilisation de l'opérateur est très simple Il utilise deux paramètres pour remplir sa fonction. Le premier paramètre est l' objet que vous souhaitez vérifier, et le deuxième paramètre est le nom de la classe (en fait un nom d'interface), utilisé pour déterminer si cet objet est une instance de la classe correspondante. Bien entendu, la terminologie ci-dessus est utilisée afin que vous puissiez voir à quel point cet opérateur est intuitif à utiliser. Sa syntaxe de base est la suivante :
if (object instanceof class name){ //做一些有用的事情 }
Utilisation de l'opérateur instanceof
<?php class User{ private $name; public function getName(){ return "UserName is ".$this->name; } } class NormalUser extends User { private $age = 99; public function getAge(){ return "age is ".$this->age; } } class UserAdmin{ //操作. public static function getUserInfo(User $_user){ echo $_user->getAge(); } } $normalUser = new NormalUser(); UserAdmin::getUserInfo($normalUser); ?>
Résultat de l'exécution du programme : l'âge est 99
Parce que dans la classe User Sans cette méthode, une erreur est signalée :
<?php class User{ private $name; public function getName(){ return "UserName is ".$this->name; } } class NormalUser extends User { private $age = 99; public function getAge(){ return "age is ".$this->age; } } class UserAdmin{ //操作. public static function getUserInfo(User $_user){ echo $_user->getAge(); } } $User = new User(); // 这里new的是User. UserAdmin::getUserInfo($User); ?>
Résultat de l'exécution du programme :
Fatal error: Call to undefined method User::getAge() in E:\PHPProjects\NowaMagic\php\php_InstanceofOperator.php on line 99
Utilisez l'opérateur instatnceof pour effectuer un jugement de type avant l'opération. Pour assurer la sécurité du code.
<?php class User{ private $name; public function getName(){ return "UserName is ".$this->name; } } class NormalUser extends User { private $age = 99; public function getAge(){ return "age is ".$this->age; } } class UserAdmin{ //操作. public static function getUserInfo(User $_user){ if($_user instanceof NormalUser ){ echo $_user->getAge(); }else{ echo "类型不对,不能使用这个方法."; } } } $User = new User(); // 这里new的是User. UserAdmin::getUserInfo($User); ?>
Résultat de l'exécution du programme : Le type est incorrect et cette méthode ne peut pas être utilisée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!