2016-03-21 4 views
2

Метод ниже не работает.Как передать значение анонимной функции?

$dir = '/web/source/htm/arc.php' 

// no routing 
$app->get('/', function() { 
    return ob(__DIR__ . $dir); 
}); 

В JavaScript $ реж (конечно, в синтаксисе JS) будет доступен с помощью функции, но в PHP это не похоже на работу.

Я также попытался

// no routing 
$app->get('/', function($dir) { 
    return ob(__DIR__ . $dir); 
}); 

ответ

1

Анонимных также известны как замыкания в PHP. Это похоже на закрытие JavaScript, за исключением того, что закрытые переменные не создаются автоматически.

Это экономит память, неявно импортируя переменные, которые вам не нужны.

Вы должны явно импортировать эти переменные, используя ключевое слово use.

$app->get('/', function() use ($dir) { 
    return ob(__DIR__ . $dir); 
}); 

Смотрите здесь:

http://php.net/manual/en/functions.anonymous.php

4

В PHP переменные вне функции не доступны внутри (за исключением superglobal переменных).

Чтобы получить доступ к переменным за пределами функции, вы должны сообщить функции, что у нее должен быть доступ к ней. Это делается с помощью ключевого слова use: функции

$dir = '/web/source/htm/arc.php' 

// no routing 
$app->get('/', function() use ($dir) { 
    return ob(__DIR__ . $dir); 
});