请注意,当您反射的内容是您要检查的接口时,此方法也返回 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() 无法以静态方式调用