Я полагаю, что подразумевается, что обратный вызов выполняется в текущей области. call_user_func
, или любая функция, которая использует обратный вызов (например, preg_replace_callback
), предназначена для программной эмуляции эквивалентного встроенного вызова. Другими словами, он должен вести себя таким образом, чтобы обеспечить предполагаемую функциональность.
Поэтому в следующем случае Foo->A()
и Foo->B()
должны вести себя одинаково, независимо от видимости:
class Foo() {
function Bar() {
}
function A() {
return $this->Bar();
}
function B() {
return call_user_func(array($this, 'Bar'));
}
}
Это явно не задокументировано, что было бы удобно.