2009-03-20 2 views

Antwort

35

Verwenden Sie Reflexion. ReflectionClass->isAbstract()

es wie folgt verwendet:

$class = new ReflectionClass('NameOfTheClass'); 
$abstract = $class->isAbstract(); 
+0

mich schlagen um 30 Sekunden ... –

+0

Gibt es eine Möglichkeit, es zu tun * ohne * Reflection verwenden (so dass ich don‘ t müssen die ReflectionClass Methoden implementieren?) –

+0

übergeben Sie einfach den Namen Ihrer Klasse zu ReflectionClass Konstruktor – vartec

4

Sie Reflection auf die Klasse verwenden können.

+0

Endlich bin ich schneller ;-) – vartec

+0

hah, ich habe dich auch updated. Verdammt, musste diese Anweisung behalten, um zuerst zu versuchen, aber Sie gewinnen :) – jonstjohn

0

Wenn Sie dies in Runtime überprüfen müssen, würde ich vorschlagen, dass Sie Ihre Anwendungsarchitektur neu bewerten.

Sie sollten dies niemals versuchen, es sei denn, Sie erstellen eine extrem komplexe Anwendung, um anderen Code zu prüfen, den Sie nicht ändern können.

+3

Danke, dass Sie meine Frage nicht beantwortet haben. –

+0

Es war nur ein Vorschlag ... BTW, danke für das Abstimmen für etwas vorschlagen. – Seb

+0

@KeithPalmerJr. Das ist eigentlich eine faire Antwort. –

4
<?php 

abstract class Picasso 
{ 
    public function __construct() 
    { 

    } 
} 

$class = new ReflectionClass('Picasso'); 

if($class->isAbstract()) 
{ 
    echo "Im abstract"; 
} 
else 
{ 
    echo "Im not abstract"; 
} 

?> 

finden Sie im Handbuch: www.php.net/oop5.reflection

Verwandte Themen