2016-06-08 2 views
6

С PHP7 у нас есть anonymous classes.Как обнаружить экземпляр анонимного класса?

Как мы можем узнать, является ли случай $instance экземпляром анонимного класса?

+0

Из интереса, что вы используете классы анонимным? Они довольно интересные и классные; но (за пределами нескольких специализированных библиотек) я не видел каких-либо прецедентов, где они особенно полезны –

+0

@MarkBaker Мне нужно быстро создать объект в обратном вызове и он должен реализовать определенный интерфейс ;-) – MinhTri

ответ

8

Использование Reflection

$instance = new class {}; 

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

EDIT

Конечно, при условии, что вы должны работать PHP7 для анонимных классов в любом случае, завернуть в однострочника

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

Он работает Великий. Спасибо вам! – MinhTri

0

Вы можете попробовать следующее: Here

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

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

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

Выход:

BOOL (ложь) BOOL (истина)

Смежные вопросы