PHP使用可变范围



我使用的是slimphp框架,对路由函数的可变范围感到困惑。我有以下内容:

$app = new SlimSlim(array(
 'templates.path' => '../templates/',
 'view' => new SlimExtrasViewsTwig()
));
$user = SESSession::getInstance();
include 'routes.php';
$app->run();

//Routes.php

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

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

Notice: Undefined variable: user

为什么我可以从这个文件访问$app变量,但不能访问$user变量?

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

相关内容

  • 没有找到相关文章

最新更新