Анонимная функция/закрытие и использование self:: или static::

Я работаю с анонимными функциями, где я создаю анонимную функцию вне объекта, а затем добавляю ее к объекту, в котором она будет использоваться с помощью магической функции __callStatic. Закрытия, в которые добавляются функции, содержат методы из родительского класса. Мне интересно, смогу ли я вызывать эти методы из закрытия?

Сейчас я получаю эту ошибку:

EmptyObject::addMethod('open', function(){
    if (static::_hasAdapter(get_class(), __FUNCTION__))
            return self::_callAdapter(get_class(), __FUNCTION__, $details);

    echo '<p>You have mail!</p>';
});

выкидывает эту ошибку:

Fatal error: Cannot access static:: when no class scope is active in

И

//Add the functions
EmptyObject::addMethod('open', function(){
    if (EmptyObject::_hasAdapter('EmptyObject', __FUNCTION__))
            return EmptyObject::_callAdapter('EmptyObject', __FUNCTION__, $details);

    echo '<p>You have mail!</p>';
});

выкидывает эту ошибку, потому что метод защищен

Fatal error: Uncaught exception 'BadMethodCallException' with message 'Method '_hasAdapter' was not found in class EmptyObject'

9
задан Devin Dixon 27 November 2011 в 18:24
поделиться