首頁 > 後端開發 > php教程 > php類型運算子instanceof是什麼?怎麼使用?

php類型運算子instanceof是什麼?怎麼使用?

伊谢尔伦
發布: 2023-03-10 22:54:01
原創
1755 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板