Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > callback function


Автор: neoks 31.5.2012, 21:38
Общем шло все замечательно пока не понял что функция не видит аргументы другой функции, ну как бы да, логично что в PHP функции не видят внешние переменные. Вот примерчик:

Код

function troll($callback){
            $callback('data');
        }
        function dip($n){
            troll(function($data){
                print '_'.$n.'_'.$data;
            });
        }
        
        dip('string'); //результат __data то есть $n не видна, а должен быть такой результат _string_data
 

В PHP 5.4 уже реализовали callback функции как в JS но к сожалению не видят переменные которые были объявлены раньше, например переменная $n не видна и нужно объявлять global.
Может я еше не до конца погрузился в PHP 5.4 и может кто подскажет как обойти такую проблему ? За раннее спасибо )

Автор: Fortop 31.5.2012, 22:37
Необходимо явно указывать захватываемые переменные
Код

function ($param1, $param2) use ($somethingelse) {

}

Автор: neoks 1.6.2012, 00:36
О спасибо, чет новенькое для меня эти пространственные имена, буду учить значит ))

Автор: Fortop 1.6.2012, 07:56
Цитата(neoks @  1.6.2012,  00:36 Найти цитируемый пост)
чет новенькое для меня эти пространственные имена

Это не имеет отношения к namespace

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)