如何访问PHP flight的回调函数中的变量

时间:2015-08-10 11:54:43

标签: php callback frameworks routing

我正在使用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);

}

但这会让我总是有最后一页。虽然我可能想要转到第一页或任何其他页面。

2 个答案:

答案 0 :(得分:0)

我终于做到了:

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();
        }
    }
});

答案 1 :(得分:0)

查看框架文档(以前从未使用过它)看起来你可以做命名参数来路由你从网址中拉出参数的地方,例如:/ 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);