我对Slim Framework完全不熟悉。我正在开发一个Web服务,它应该提供Android应用程序和Web应用程序之间的接口。我使用Slim Documentation来完成我的第一步,现在我想创建一个简单的GET路由,从App接收信息。以下是我到目前为止的情况:
require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();
$name_outside = '';
$app = new \Slim\Slim();
$app->get('/session/program_name/:name', function ($name) use($app) {
$name_outside = $name;
echo $name;
});
$app->run();
echo $name_outside;
我需要访问变量:函数外部的名称,但我得到的是什么。我在这做错了什么?
顺便说一句:我知道GET路由通常用于列出现有资源,但对于我的简单案例,我决定以这种方式使用它。
答案 0 :(得分:1)
修复您的代码以将名称保存为args参数,然后您可以进入您的函数
@Override
public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
// Generate additional Information [...]
// Write it to the token
((DefaultOAuth2AccessToken)accessToken).setAdditionalInformation(addInfo);
// Encode Token to JWT
String encoded = super.encode(accessToken, authentication);
// Set JWT as value of the token
((DefaultOAuth2AccessToken) accessToken).setValue(encoded);
return accessToken;
}
答案 1 :(得分:0)
在你传递的函数上下文中访问$name_outside
。
$app->get('/session/program_name/:name', function ($name) use($app, &$name_outside) {
$name_outside = $name;
echo $name;
});
但也许你以错误的方式使用Slim。为什么你必须访问路线之外的变量?
run()
电话后没有代码被执行。这就是苗条的工作方式,尝试将一个骰子放在你回应变量的地方,它是无法达到的。
您不应该以这种方式访问其外部路由的上下文。要转换请求或响应,请使用带有钩子的中间件。