PHP5에서는 메소드를 통해 전달되는 변수의 유형이 불확실합니다. 현재 인스턴스가 이러한 형식을 가질 수 있는지 확인하려면 instanceof연산자를 사용하세요. 현재 인스턴스가 instanceof를 사용하여 현재 클래스, 상위 클래스(위로 무한 추적) 및 구현된 인터페이스와 비교하면 true를 반환합니다.
"instanceof"operator 사용은 매우 간단합니다. 두 개의 매개변수를 사용하여 기능을 완성합니다. 첫 번째 매개변수는 확인하려는 객체이고, 두 번째 매개변수는 이 객체가 해당 클래스의 인스턴스인지 확인하는 데 사용되는 클래스 이름(실제로는 인터페이스 이름)입니다. 물론, 위의 용어는 이 연산자가 얼마나 직관적으로 사용되는지를 알기 위해 사용된 것입니다. 기본 구문은 다음과 같습니다.
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); ?>
프로그램 실행 결과: age is 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
연산자의 인스턴스를 사용하여 연산 전 유형 판단을 수행합니다. 코드의 보안을 보장합니다.
<?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 중국어 웹사이트의 기타 관련 기사를 참조하세요!