【发布时间】:2014-09-12 23:48:44
【问题描述】:
是否可以用这样的代码重构匿名函数:
function foo($path, $callback) {
$callback();
}
$app = array('a', 'b', 'c');
foo('vehicle/:id', function() use ($app) {
echo $app[0];
});
我试过了,但没有任何反应:
function foo($path, $callback) {
$callback();
}
$vehicleCallback = function() use ($app) {
echo $app[0];
};
$app = array('a', 'b', 'c');
foo('vehicle/:id', $vehicleCallback);
其他变体给了我语法错误。如果这很重要,我希望将这些函数移动到一个单独的文件中。
这是我的最终目标
callbacks.php
$cb1 = function () use ($app) {
// things
};
$cb2 = function () use ($app) {
// things
};
// ...more callbacks
router.php
require 'callbacks.php';
$app = new \Foo();
// code that might possibly manipulate $app
$app->bar('/some/relative/path/:param1', $cb1);
$app->bar('/another/relative/path', $cb2);
// possibly more code that mutates $app and then more callbacks
【问题讨论】:
-
是这样,但是你应该在声明
$app之后声明使用$app的匿名函数,否则你什么也不发送给它 -
@RoyalBg 这行得通,但这是否意味着我必须在声明
$app之后需要函数文件?如果$app发生变化怎么办? -
它应该比之前改变:)
标签: php closures anonymous-function php-closures