2016-06-08 76 views
6

Od PHP7 mamy anonymous classes.Jak wykrywać instancję anonimowej klasy?

Skąd możemy wiedzieć, czy $instance jest instancją anonimowej klasy?

+0

Z odsetek, co używasz anonimowych klas dla? Są całkiem ciekawe i fajne; ale (poza kilkoma specjalistycznymi bibliotekami) nie widziałem żadnych przypadków użycia, które są szczególnie przydatne –

+0

@MarkBaker Potrzebuję szybko utworzyć obiekt w wywołaniu zwrotnym i musi zaimplementować określony interfejs ;-) – MinhTri

Odpowiedz

8

Korzystanie Reflection

$instance = new class {}; 

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

EDIT

Oczywiście, biorąc pod uwagę, że musi być uruchomiony PHP7 dla anonimowych klas tak, zawiń go w jedną wkładką

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

To działa wspaniały. Dzięki Ci! – MinhTri

0

Możesz wypróbować ten: Here

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

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

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

wyjściowa:

bool (false) bool (true)