У меня есть какой-то сторонний код, который создает замыкание, которое впоследствии связывается с объектом.
Print_r на объекте замыкания дает это:
Closure Object ( [this] => am4Widgets Object ( ) )
Теперь мне нужно получить «instanceof» связанного объекта (в данном случае «am4Widgets»), какой-то псевдокод, например
print_r(myClosureObject instanceofboundobject am4Widgets);
который должен вывести «TRUE».
Я искал php.net, но безрезультатно.
Заранее спасибо за любую идею / предложение.
ОБНОВИТЬ:
Вот где создается замыкание (фрагмент кода, который я не могу изменить):
function initActions()
{
parent::initActions();
.
.
.
add_action('wp_head', function(){
$ajax_url = admin_url( 'admin-ajax.php' );
echo <<<CUT
<script>...some javascript code...</script>
CUT;
});
}
На самом деле я пытаюсь отцепить закрытие от wp_head, потому что оно мне нужно в нижнем колонтитуле.
Я использую глобальный wordpress ‘$ wp_filters для доступа ко всем зарегистрированным хукам, но теперь мне нужен способ уникальной идентификации замыкания, которое я хочу отцепить, что может быть простой задачей, если есть способ получить доступ к связанному объекту замыкания.
Ты можешь использовать ReflectionFunction
объект для этой цели.
class A {}
$closure = (function () {
echo '$this class from closure: ' . get_class($this) . "\n";
})->bindTo(new A());
$closure();
$fn = new ReflectionFunction($closure);
echo '$this class from reflection: ' . get_class($fn->getClosureThis());
Выход:
$this from closure: A
$this from reflection: A
Других решений пока нет …