Maison  >  Article  >  développement back-end  >  Quelle est l'instance d'opérateur de type php ? Comment utiliser ?

Quelle est l'instance d'opérateur de type php ? Comment utiliser ?

伊谢尔伦
伊谢尔伦original
2017-06-21 16:04:141738parcourir

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn