2016-03-21 8 views
2

以下の方法は動作しません。匿名関数に値を渡すにはどうすればよいですか?

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

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

JavaScriptでは、$ dir(もちろんJS構文)は関数からアクセスできますが、PHPでは動作しないようです。私はまた、関数の外に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

を試み

は(superglobal変数を除く)内部アクセスできません。

関数の範囲外の変数にアクセスするには、その関数にアクセスする必要があることを関数に伝える必要があります。これはuseキーワードを使用して行われます。

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

// no routing 
$app->get('/', function() use ($dir) { 
    return ob(__DIR__ . $dir); 
}); 
関連する問題