请注意,当您反射的对象正是您正在检查的接口时,此方法也会返回 true
<?php
interface MyInterface {}
$reflect = new ReflectionClass('MyInterface');
var_dump($reflect->implementsInterface('MyInterface')); // bool(true)
?>
(PHP 5, PHP 7, PHP 8)
ReflectionClass::implementsInterface — 实现接口
检查是否实现了某个接口。
interface
接口名称。
ReflectionClass::implementsInterface() 如果 interface
不是接口,则抛出 ReflectionException 异常。
请注意,当您反射的对象正是您正在检查的接口时,此方法也会返回 true
<?php
interface MyInterface {}
$reflect = new ReflectionClass('MyInterface');
var_dump($reflect->implementsInterface('MyInterface')); // bool(true)
?>
// 检查类 Fruit 是否实现接口 Apple
interface Apple {
function taste();
}
class Fruit implements Apple {
function taste() {
echo "Seet";
}
}
$obj=new ReflectionClass('Fruit');
var_dump($obj->implementsInterface('Apple')); // 此处检查类 Fruit 是否实现接口 Apple
interface Factory
{
public function sayHello();
}
class ParentClass implements Factory
{
public function sayHello()
{
echo "hello\n";
}
}
class ChildrenClass extends ParentClass
{
}
$reflect = new ReflectionClass('ParentClass');
var_dump($reflect->implementsInterface('Factory'));
$second_ref = new ReflectionClass('ChildrenClass');
var_dump($second_ref->isSubclassOf('ParentClass'));
$third_ref = new ReflectionClass('Factory');
var_dump($third_ref->isInterface());
// 不能作为静态方法调用
var_dump(ReflectionClass::isInterface('Factory'));
die;
//#结果
bool(true)
bool(true)
bool(true)
PHP 严重错误:非静态方法 ReflectionClass::isInterface() 不能静态调用