Определите, в каком пространстве имен функция была вызвана в

Мне было интересно, можно ли определить текущее пространство имен при вызове функции. У меня есть это объявление функции:

<?php
namespace Site\Action;
function add ($hook, $function) {
    /**
     * determine the namespace this was called from because
     * __NAMESPACE__ is "site\action" :(
     */
     if (is_callable($function))
         call_user_func($function);
}
?>

И в другом файле:

<?php
namespace Foo;
function bar () {
}
?>

И давайте скажем, у меня это как мой процедурный код:

<?php
namespace Foo;
Site\Action\add('hookname', 'bar');
?>

Было бы разумно предположить, что Bar в этом случае предназначалось для разрешения как Foo \ bar , поскольку это было пространство имен, которое было вызывается из.

Это было долгое объяснение, так что еще раз, можно ли определить активное пространство имен, из которого был вызван Site \ Action \ add () ?

Заранее спасибо.

7
задан Wesley van Opdorp 15 December 2011 в 10:55
поделиться