Область видимости переменных - косяк PHP?

Mechanical

Новичок
Область видимости переменных - косяк PHP?

Столкнулся с одной вещью, и не пойму как же быть.

PHP:
function f1 ($a) {
  function f2($b) {
    echo($a);
  }
}
Т.к. область видимости переменной в функции ограничена областью функции, переменная $a не существует в функции f2. Но очень хочется, чтоб её там было видно.

При чем
1) не хочется использовать global $a.
2) не могу передать $a в f2 ни по ссылке ни по значению, т.к. f2 будет вызываться через callback в функции f1.

Чувствую, что чего-то не знаю. Чего?
Спасибо!
 

White Rabbit

белый кролик
А зачем определять одну функцию внутри другой?
...
не могу передать $a в f2 ни по ссылке ни по значению, т.к. f2 будет вызываться через callback в функции f1
call_user_func_array()?
 

Фанат

oncle terrible
Команда форума
долго думал, чтобы вложенные функции родить?
все претензии - к себе, любимому.
 

Mechanical

Новичок
Началось всё с того, что пришлось писать махонький класс.

В одном из методов этого класса вызвал перловый replace регулярного выражения с коллбэком.

Дак вот, пришлось в методе определять коллбэк функцию, так как вызвать коллбэком другой метод ( типа $this->callback() ) тоже не получается.

Вот такие пироги :)
 

Фанат

oncle terrible
Команда форума
вот с этого и надо было начинать.
мол, не умею колбэк вызвать.
а не "в пхп косяки с областью видимости"
скромнее надо быть
 

Mechanical

Новичок
Согласен.
Я ж и говорю, что чувствую что не знаю.

Дак как же быть? В коллбэк передать ничего своего нельзя, а неглобальные переменные он не видит.
 
Сверху