ホームページ >バックエンド開発 >PHPチュートリアル >PHPの型演算子instanceofとは何ですか?使い方?
PHP5 では、メソッドを介して渡される変数の型は不確かです。現在のインスタンスがそのような形式を持つことができるかどうかを判断するには、instanceofoperator を使用します。現在のインスタンスが、instanceof を使用して、現在のクラス、親クラス (上方への無限トレース)、および実装されたインターフェイスと比較する場合、true を返します。
"instanceof"operator の使用は非常に簡単で、2 つのパラメーターを使用して関数を完了します。最初のパラメーターはチェックするオブジェクトで、2 番目のパラメーターはクラス名 (実際にはインターフェイス名) で、このオブジェクトが対応するクラスのインスタンスであるかどうかを判断するために使用されます。もちろん、上記の用語は、このオペレーターがいかに直感的に使用できるかを理解するために使用されています。基本的な構文は次のとおりです:
if (object instanceof class name){ //做一些有用的事情 }
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); ?>
プログラム実行結果: 年齢は99歳
Userクラスにはそのようなメソッドがないためエラーが報告されます:
<?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); ?>
プログラム実行結果:
Fatal error: Call to undefined method User::getAge() in E:\PHPProjects\NowaMagic\php\php_InstanceofOperator.php on line 99
Operator のインスタンスを使用し、操作前に型判定を行います。コードのセキュリティを確保するため。
<?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); ?>
プログラム実行結果:型が間違っているため、このメソッドは使用できません。
以上がPHPの型演算子instanceofとは何ですか?使い方?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。