ReflectionClass::isAbstract

(PHP 5, PHP 7, PHP 8)

ReflectionClass::isAbstract检查类是否为抽象类

描述

public ReflectionClass::isAbstract(): bool

检查类是否为抽象类。

参数

此函数没有参数。

返回值

成功时返回 true,失败时返回 false

示例

示例 #1 ReflectionClass::isAbstract() 示例

<?php
class TestClass { }
abstract class
TestAbstractClass { }

$testClass = new ReflectionClass('TestClass');
$abstractClass = new ReflectionClass('TestAbstractClass');

var_dump($testClass->isAbstract());
var_dump($abstractClass->isAbstract());
?>

以上示例将输出

bool(false)
bool(true)

参见

添加注释

用户贡献的注释 2 则注释

3
baptiste at pillot dot fr
7 年前
对于接口和特性

<?php
interface TestInterface { }
trait
TestTrait { }

$interfaceClass = new ReflectionClass('TestInterface');
$traitClass = new ReflectionClass('TestTrait');

var_dump($interfaceClass->isAbstract());
var_dump($traitClass->isAbstract());
?>

使用 PHP 版本 5.4- 到 5.6,以上示例将输出

bool(false)
bool(true)

使用 PHP 版本 7.0+,以上示例将输出

bool(false)
bool(false)
0
baptiste at pillot dot fr
10 个月前
对于特性
- ReflectionClass::isAbstract 如果特性包含至少一个未实现的抽象方法,包括那些在使用特性中声明的方法,则返回 true。
- ReflectionClass::isAbstract 如果所有方法都已实现,则返回 false。

<?php
trait TI { public function has() {} }
var_dump((new ReflectionClass(TI::class))->isAbstract());

trait
TT { abstract public function has(); }
trait
T { use TT; }
var_dump((new ReflectionClass(T::class))->isAbstract());
?>
将输出
bool(false)
bool(true)

对于接口
- ReflectionClass::isAbstract 如果接口包含至少一个方法,包括其扩展接口中的方法,则返回 true。
- ReflectionClass::isAbstract 如果接口不包含任何方法,则返回 false。

<?php
interface AI {}
var_dump((new ReflectionClass(AI::class))->isAbstract());

interface
II { public function has(); }
interface
I extends II {}
var_dump((new ReflectionClass(I::class))->isAbstract());
?>
将输出
bool(false)
bool(true)

对于类
- Reflection::isAbstract 如果类被标记为抽象类,则返回 true,无论它是否包含抽象方法。
To Top