【发布时间】:2013-02-18 22:20:19
【问题描述】:
我正在使用 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){
....
}
如果我不将global $user; 添加到顶部,Routes.php 将失败:
Notice: Undefined variable: user
为什么我可以从这个文件访问$app var,但我不能访问$user var?
【问题讨论】:
-
通知指的是哪一行?如果您将
routes.php的内容移动到include的位置会怎样? -
$app->get() 调用周围还有哪些其他代码?如果它在函数或方法中,那么它当然不会在本地定义 $user。
-
如果我将路由的内容移动到主引导程序中,它不会给我那个错误。没有封装
$app->get()。我想这是有道理的,因为它在一个外部文件中,我需要调用global $user,但不知道为什么我不需要调用global $app -
@Shawn Northrop:这是不可能的。
Routes.php的全部内容是什么? -
@zerkms:我的路线文件在增长,但想法都是一样的。
<?php $app->('....', function() use($app,$user){..code..}); ... more routes ... ?>仅此而已。
标签: php variables global-variables slim