엔티티가 일부 클래스가 아닌 일부 클래스의 구성원 인 경우 일부 기능을 실행하고 싶습니다.
라는 함수가 instanceof있습니다.
하지만 뭔가
if ($entity !instanceof [User,Order,Product])
답변:
공통 인터페이스를 제공 한 다음
if (!$entity instanceof ShopEntity)
또는 함께
if (!$entity instanceof User && !$entity instanceof Product && !$entity instanceof Order)
한곳에 일부 문자를 저장하기 위해 임의의 함수를 만드는 것을 피할 것입니다. 반면에 "너무 자주"필요한 경우 디자인 결함이있을 수 있습니까? ( "너무 많은 엣지 케이스"등의 의미에서)
if (!($entity instanceof User))않을까요?
$a+$b+$c대 ($a+$b)+$c. 시도한 적이 2**3**4 == (2**3)**4있습니까? ;)
if ( $entity instanceof Audio )나는이 필요합니다 use App\Entity\Audio;. 검사중인 클래스를 사용하지 않으면 PHP에서 오류가 발생하지 않지만 if는 실행되지 않습니다.
PHP 매뉴얼에 따르면 : http://php.net/manual/en/language.operators.type.php
!($a instanceof stdClass)
이것은 논리적이고 "문법적으로"올바른 구문입니다.
!$class instanceof someClass
그러나 위의 제안 된 구문은 부정의 범위를 정확히 지정하지 않았기 때문에 까다 롭습니다 : 변수 자체 또는 $class instanceof someclass. 여기서는 연산자 우선 순위에만 의존하면됩니다 [@Kolyunya 덕분에 편집 됨].
if (!$entity instanceof ShopEntity)직관적 아니지만 ... 저희의 많은 사용 !$entity으로 $entity === null.
We will only have to rely here on the smart implementation of the PHP parser.입니까? instanceof연산자가 연산자보다 우선 순위가 높다는 것을 명확하게 나타내는 언어 사양이 !있습니다.
instanceof 연산자는 부정 직전에 다음 식입니다.
!$class instanceof someClass
PHP에서 옳고 이것은 당신이 기대하는 것입니다.
instanceof연산자 의 우선 순위 가보다 높으므로 !명령문이 진정한 결과를 제공한다는 것입니다. 감사합니다