如何在 PHP 航班的回调函数中访问变量
How to access a variable in a callback function of PHP flight
我正在使用 php 飞行框架: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);
}
但这将使我始终拥有最后一页。虽然我可能想转到第一页或任何其他页面。
我终于做到了:
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);
我正在使用 php 飞行框架: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);
}
但这将使我始终拥有最后一页。虽然我可能想转到第一页或任何其他页面。
我终于做到了:
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);