PHP Conference Japan 2024

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 則註釋

baptiste at pillot dot fr
8 年前
對於介面和特性

<?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)
baptiste at pillot dot fr
1 年前
對於特性 (Traits)
- 如果特性包含至少一個未實作的抽象方法(包括在使用的特性中宣告的抽象方法),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)

對於類別來說
- 無論類別是否包含抽象方法,只要類別被標記為 abstract,Reflection::isAbstract 就會返回 true。
To Top