2016-06-08 30 views
6

Da PHP7, abbiamo anonymous classes.Come rilevare un'istanza di una classe anonima?

Come possiamo sapere se un $instance è un'istanza di una classe anonima?

+0

Fuori di interesse, che cosa stai usando classi anonime per? Sono piuttosto interessanti e interessanti; ma (al di fuori di alcune librerie specialistiche) non ho visto casi d'uso in cui sono particolarmente utili –

+0

@MarkBaker Ho bisogno di creare rapidamente un oggetto in un callback e deve implementare una determinata interfaccia ;-) – MinhTri

risposta

8

Utilizzando Reflection

$instance = new class {}; 

$testInstance = new ReflectionClass($instance); 
var_dump($testInstance->isAnonymous()); 

EDIT

Naturalmente, dato che è necessario eseguire PHP7 per le classi anonime in ogni caso, avvolgetelo in un one-liner

var_dump((new ReflectionClass($instance))->isAnonymous()); 
+0

Funziona grande. Grazie! – MinhTri

0

Puoi provare questo: Here

<?php 
class TestClass {} 
$anonClass = new class {}; 

$normalClass = new ReflectionClass('TestClass'); 
$anonClass = new ReflectionClass($anonClass); 

var_dump($normalClass->isAnonymous()); 
var_dump($anonClass->isAnonymous()); 
?> 

uscita:

bool (false) bool (true)

Problemi correlati