반응형
symfony2에서 일부 클래스의 인스턴스가 아닌지 확인하는 방법
엔터티가 몇 가지 클래스의 구성원이지만 일부가 아닌 경우 일부 기능을 실행하고 싶습니다.
라는 함수가 instanceof
있습니다.
하지만 뭔가
if ($entity !instanceof [User,Order,Product])
공통 인터페이스를 제공 한 다음
if (!$entity instanceof ShopEntity)
또는 함께
if (!$entity instanceof User && !$entity instanceof Product && !$entity instanceof Order)
한곳에 일부 문자를 저장하기 위해 임의의 함수를 만드는 것을 피할 것입니다. 반면에 "너무 자주"필요한 경우 디자인 결함이있을 수 있습니까? ( "너무 많은 엣지 케이스"등의 의미에서)
PHP 매뉴얼에 따르면 : http://php.net/manual/en/language.operators.type.php
!($a instanceof stdClass)
이것은 논리적이고 "문법적으로"올바른 구문입니다.
!$class instanceof someClass
그러나 위의 제안 된 구문은 부정의 범위를 정확히 지정하지 않았기 때문에 까다 롭습니다 : 변수 자체 또는 $class instanceof someclass
. 여기서는 연산자 우선 순위에만 의존하면됩니다 [@Kolyunya 덕분에 편집 됨].
instanceof
연산자는 부정 직전에 다음 식입니다.
!$class instanceof someClass
PHP에서 옳고 이것은 당신이 기대하는 것입니다.
이 함수는 다음을 수행해야합니다.
function isInstanceOf($object, Array $classnames) {
foreach($classnames as $classname) {
if($object instanceof $classname){
return true;
}
}
return false;
}
그래서 당신의 코드는
if (!isInstanceOf($entity, array('User','Order','Product')));
function check($object) {
$deciedClasses = [
'UserNameSpace\User',
'OrderNameSpace\Order',
'ProductNameSpace\Product',
];
return (!in_array(get_class($object), $allowedClasses));
}
또는 이것을 시도 할 수 있습니다
$cls = [GlobalNameSpace::class,\GlobalNameSpaceWithSlash::class,\Non\Global\Namespace::class];
if(!in_array(get_class($instance), $cls)){
//do anything
}
참고 URL : https://stackoverflow.com/questions/11682126/how-to-check-if-not-instance-of-some-class-in-symfony2
반응형
'development' 카테고리의 다른 글
SQLite 테이블에서 마지막 자동 증가 ID를 검색하는 방법은 무엇입니까? (0) | 2020.10.28 |
---|---|
간단한 PHP 페이지 매김 스크립트 (0) | 2020.10.28 |
django 템플릿 표시 항목 값 또는 빈 문자열 (0) | 2020.10.28 |
정의되지 않은 함수 호출 : simplexml_load_string () (0) | 2020.10.28 |
Silverlight 대 Flex (0) | 2020.10.28 |