7

Doctrine のソース コードで次のテストに出くわした場合:

if (in_array('Doctrine\Common\Collections\Collection', class_implements($var))) {
    // ...
}

代わりに使用しない理由がわかりませんinstanceof

if ($var instanceof Doctrine\Common\Collections\Collection) {
    // ...
}

これは多くの点で優れています。

これを行う具体的な理由はありますか?

もしかして公演?しかし、実際には、ここに本当の違いはありますか?私には、単純な VS double quotesのように思えます。

4

4 に答える 4

1

どちらも同じことをしているようです。しかし、実際にはそうではありません。class_implements を使用する理由の 1 つは、クラスが特定のインターフェイスを実装しているかどうかを確認することです。instanceof を使用する場合、クラスがインターフェイスなのか単なるクラスなのかわかりません。

于 2013-07-15T19:46:33.290 に答える
0

親クラスがインターフェイスを実装している場合、instanceof は false を返します。ただし、class_implements は、親の実装されたインターフェイスを返します。

于 2013-08-07T03:06:03.207 に答える