エンティティがいくつかのクラスのメンバーであるが一部ではない場合、いくつかの関数を実行したい。
という機能がありますinstanceof
。
しかし、次のようなものはありますか
if ($entity !instanceof [User,Order,Product])
エンティティがいくつかのクラスのメンバーであるが一部ではない場合、いくつかの関数を実行したい。
という機能がありますinstanceof
。
しかし、次のようなものはありますか
if ($entity !instanceof [User,Order,Product])
それらに共通のインターフェースを与えてから、
if (!$entity instanceof ShopEntity)
または一緒にいる
if (!$entity instanceof User && !$entity instanceof Product && !$entity instanceof Order)
一部の文字を 1 か所に保存するためだけに、任意の関数を作成することは避けます。反対に、「頻繁に」必要な場合は、設計上の欠陥がある可能性がありますか? (「エッジケースが多すぎる」などの意味で)
PHP マニュアル: http://php.net/manual/en/language.operators.type.php
!($a instanceof stdClass)
これは、論理的で「文法的に」正しい構文にすぎません。
!$class instanceof someClass
ただし、上記の提案された構文は注意が必要です。これは、否定のスコープが正確にどちらであるかを指定していないためです。変数自体または の構成全体です$class instanceof someclass
。ここでは、演算子の優先順位のみに依存する必要があります [編集、@Kolyunya に感謝]。
この関数はそれを行う必要があります:
function isInstanceOf($object, Array $classnames) {
foreach($classnames as $classname) {
if($object instanceof $classname){
return true;
}
}
return false;
}
だからあなたのコードは
if (!isInstanceOf($entity, array('User','Order','Product')));