note 101429 modified in reflectionclass.getparentclass by danbrown
| From: | danbrown@php.net | Date: | Thu, 16 Dec 2010 11:14:47 +0000 |
| Subject: | note 101429 modified in reflectionclass.getparentclass by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-174977@lists.php.net to get a copy of this message | ||
Here is a "replacement" for is_a that will additionally look both into the extended
classes and in the implemented interfaces
<?php
/**
* Check if a class extends or implements a specific class/interface
* @param string $search The class or interface name to look for
* @param string $className The class name of the object to compare to
* @return bool
*/
function IsExtendsOrImplements( $search, $className ) {
$class = new ReflectionClass( $className );
if( false === $class ) {
return false;
}
do {
$name = $class->getName();
if( $search == $name ) {
return true;
}
$interfaces = $class->getInterfaceNames();
if( is_array( $interfaces ) && in_array( $search, $interfaces )) {
return true;
}
$class = $class->getParentClass();
} while( false !== $class );
return false;
}
?>
--was--
Here is a "replacement" for is_a that will additionally look both into the extended
classes and in the implemented interfaces
/**
* Check if a class extends or implements a specific class/interface
* @param string $search The class or interface name to look for
* @param string $className The class name of the object to compare to
* @return bool
*/
function IsExtendsOrImplements( $search, $className ) {
$class = new ReflectionClass( $className );
if( false === $class ) {
return false;
}
do {
$name = $class->getName();
if( $search == $name ) {
return true;
}
$interfaces = $class->getInterfaceNames();
if( is_array( $interfaces ) && in_array( $search, $interfaces )) {
return true;
}
$class = $class->getParentClass();
} while( false !== $class );
return false;
}
http://php.net/manual/en/reflectionclass.getparentclass.php