2

我正在使用 slimphp 框架,并且对路由函数的变量范围感到困惑。我有以下内容:

$app = new \Slim\Slim(array(
 'templates.path' => '../templates/',
 'view' => new Slim\Extras\Views\Twig()
));

$user = SES\Session::getInstance();

include 'routes.php';

$app->run();

//Routes.php

$app->get("/", function() use ($app, $user){
....
}

Routes.php如果我不添加global $user;到顶部,则失败:

Notice: Undefined variable: user

为什么我可以$app从此文件访问 var 但无法访问$uservar?

4

1 回答 1

1

我已经缩小了问题的范围。我实际上并没有调用 include 'routes.php';我有一个实用功能,可以加载文件夹中的所有路由。我在我的引导程序中称之为:SES\Util::loadRoutes('../routes'); 这是一个静态函数,它读取一个目录并执行 $filename; 对于每个文件。我过去一定处理过这个问题,因为在这个函数中我声明了 global $app; Sooo ..我仍然不完全理解何时需要调用 global 但这解决了部分混乱!

于 2013-02-23T02:45:48.367 回答