phpのinstanceofとはどういう意味ですか?

藏色散人
リリース: 2023-03-09 17:18:02
オリジナル
5178 人が閲覧しました

php instanceof は php のキーワードです。instanceof キーワードを使用すると、オブジェクトがクラスのインスタンスであるか、クラスのサブクラスであるか、または特定のインターフェイスを実装しているかを判断し、対応する操作を実行できます。

phpのinstanceofとはどういう意味ですか?

この記事の動作環境: Windows 7 システム、PHP バージョン 5.6、Dell G3 コンピューター。

PHP5 のもう 1 つの新しいメンバーは、instdnceof キーワードです。このキーワードを使用して、オブジェクトがクラスのインスタンスであるか、クラスのサブクラスであるか、または特定のインターフェイスを実装しているかを判断し、対応する操作を実行します。場合によっては、クラスが特定の型であるか、または特定のインターフェイスを実装しているかを判断する必要があります。このタスクには、instanceof 演算子が非常に適しています。 instanceof 演算子は、インスタンスが特定の型であるかどうか、インスタンスが特定の型を継承しているかどうか、インスタンスまたはその祖先クラスが特定のインターフェイスを実装しているかどうかという 3 つのことをチェックします。たとえば、manager という名前のオブジェクトが Employee クラスのインスタンスであるかどうかを知りたいとします。

$manager = new Employee();
…
if ($manager instanceof Employee)
  echo "Yes";
ログイン後にコピー

注目すべき点が 2 つあります。まず、クラス名には区切り文字 (引用符) がありません。区切り文字を使用すると構文エラーが発生します。次に、比較が失敗した場合、スクリプトは実行を終了します。 instanceof キーワードは、複数のオブジェクトを同時に操作する場合に特に便利です。たとえば、関数を繰り返し呼び出しても、オブジェクトの種類に基づいて関数の動作を調整したい場合があります。この目標を達成するには、case ステートメントと instanceof キーワードを使用します。

class test{}
class test{}
class testChilern Extends test{}
$a = new test();
$m = new test();
$i = ($m instanceof test);
if($i)
  echo &#39;$m是类test的实例!<br />&#39;; // get this value
switch ($a instanceof test){
  case true :
    echo &#39;YES<br />&#39;;
    break;
  case false :
    echo &#39;No<br />&#39;; //get this value
    break;
}
$d=new testChilern();
if($d instanceof test)echo &#39;$d是类test的子类!<br />&#39;; // get this value
ログイン後にコピー

phpのinstanceofの機能は何ですか

機能: (1) オブジェクトが特定のクラスのインスタンスであるかどうかを判断します。 (2) オブジェクトがインターフェイスを実装しているかどうかを判断します。

最初の使用法:

<?php
$obj = new A();
if ($obj instanceof A) {
  echo &#39;A&#39;;
}
ログイン後にコピー

2 回目の使用法:

<?php
interface ExampleInterface
{
   public function interfaceMethod();
 }
 class ExampleClass implements ExampleInterface
{
   public function interfaceMethod()
   {
     return &#39;Hello World!&#39;;
   }
 }
$exampleInstance = new ExampleClass();
 if($exampleInstance instanceof ExampleInterface){
   echo &#39;Yes, it is&#39;;
 }else{
   echo &#39;No, it is not&#39;;
} 
?>
ログイン後にコピー

出力結果: はい、です

さらに、instanceof と is_subclass_of() の違いに注意してください。コードを参照してください:

<?php
class Foo {
   public $foobar = &#39;Foo&#39;;
   public function test() {
     echo $this->foobar . "\n";
   }
 }
 class Bar extends Foo {
   public $foobar = &#39;Bar&#39;;
 }
$a = new Foo();
$b = new Bar();
echo "use of test() method\n";
$a->test();
$b->test();
echo "instanceof Foo\n";
var_dump($a instanceof Foo); // TRUE
var_dump($b instanceof Foo); // TRUE
echo "instanceof Bar\n";
var_dump($a instanceof Bar); // FALSE
var_dump($b instanceof Bar); // TRUE
echo "subclass of Foo\n";
var_dump(is_subclass_of($a, &#39;Foo&#39;)); // FALSE
var_dump(is_subclass_of($b, &#39;Foo&#39;)); // TRUE
echo "subclass of Bar\n";
var_dump(is_subclass_of($a, &#39;Bar&#39;)); // FALSE
var_dump(is_subclass_of($b, &#39;Bar&#39;)); // FALSE
?>
ログイン後にコピー

出力結果 (PHP 5.4.4):

 use of test() method
 Foo
 Bar
 instanceof Foo
 bool(true)
 bool(true)
 instanceof Bar
 bool(false)
 bool(true)
 subclass of Foo
 bool(false)
 bool(true)
 subclass of Bar
 bool(false)
ログイン後にコピー

推奨学習: "PHP ビデオ チュートリアル "

以上がphpのinstanceofとはどういう意味ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!