2009-03-20 10 views

risposta

35

Utilizzare la riflessione. ReflectionClass->isAbstract()

usare in questo modo:

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

me battere di 30 secondi ... –

+0

C'è un modo per farlo senza * * utilizza ReflectionClass (in modo che I don' t necessario implementare i metodi ReflectionClass?) –

+0

devi solo passare il nome della classe al costruttore ReflectionClass – vartec

4

È possibile utilizzare Reflection sulla classe.

+0

finalmente sono più veloce ;-) – vartec

+0

hah, ho anche svalutato te. Dannazione, dovevo mantenere quel brief per cercare di ottenere il primo, ma tu vinci :) – jonstjohn

0

Se è necessario controllare questo in runtime, suggerirei di rivalutare l'architettura dell'applicazione.

Non si dovrebbe mai provare a farlo a meno che non si stia costruendo un'applicazione estremamente complessa per ispezionare altro codice che non è possibile modificare.

+3

Grazie per non aver risposto alla mia domanda. –

+0

Era solo un suggerimento ... A proposito, grazie per le votazioni in down per aver suggerito qualcosa. – Seb

+0

@KeithPalmerJr. questa è in realtà una risposta giusta. –

4
<?php 

abstract class Picasso 
{ 
    public function __construct() 
    { 

    } 
} 

$class = new ReflectionClass('Picasso'); 

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

?> 

consultare il manuale: www.php.net/oop5.reflection

Problemi correlati