在
PHP5中,透過方法傳遞變數的型別有不確定性,使用instanceof運算子,可以判斷目前實例是否可以有這樣的一個形態。目前實例使用 instanceof與目前類別,父類(向上無限追溯),已經實現的介面比較時,傳回真。
"instanceof"運算子的使用非常簡單,它用兩個參數來完成其功能。第一個參數是你想要檢查的物件,第二個參數是類別名稱(事實上是一個介面名稱),用來決定是否這個物件是對應類別的一個實例。當然,使用了上面的術語,這樣就可以看到這個操作符的使用是多麼直觀。它的基本語法如下:
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
使用instatnceof運算符,在操作前先進行類型判斷。以保障程式碼的安全性性。
<?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中文網其他相關文章!