繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM