[英]How to access a variable in a callback function of PHP flight
我正在使用php flight框架: http : //flightphp.com/我想调用flight :: route(); 几次自动创建一些路由器。 但是我在回调函数中需要一个变量。
我正在努力:
foreach($pages as $page) {
Flight::route("/" . $page['route'], function() {
// I need $page here
});
}
Flight::start();
$ pages是我创建的对象数组。 当路由触发时,我需要那些对象。 我该怎么做呢?
也许有人可以帮我这个忙。 Flightphp框架具有方法Flight :: set(“ variable”,value)和Flight :: get(“ variable”);
也许我可以做:
foreach($pages as $page) {
Flight::route("/" . $page['route'], function() {
$page = Flight::get("page");
var_dump($page);
// I need $page here
});
Flight::set("page", $page);
}
但这将使我始终拥有LAST页面。 虽然我可能想转到第一页或任何其他页面。
我终于做到了:
Flight::set("pages", $pages);
Flight::route("/@route", function($route) {
$pages = Flight::get("pages");
foreach($pages as $page) {
if($page['route'] == $route) {
include_once $page['controller'];
if(isset($activepage))$activepage->draw();
}
}
});
查看框架文档(以前从未使用过),看来您可以在其中进行命名的参数传递,以从URL中提取参数,例如:/ mypage / var1 / var2等,在这种情况下,您必须循环遍历数组并针对某种形式的模式生成flight :: route()位,而不是像您似乎正在做的那样,即识别页面名称并尝试以此为基础设置路线。
所以我认为您的代码将是这样的
foreach($pages as $page) {
Flight::route('/@'.$page, function($localpage){
echo "I am, $localpage";
});
}
如果没有出现,它也将为您提供传递给路由的所有参数的结果,因此您可能会过滤掉类似的内容,尽管您必须随后过滤路由内的参数。 (在回调中移动您的foreach)
Flight::route('/', function($route){
// Array of named parameters
$route->params;
}, true);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.