瘦身PHP和GET参数

我正在使用Slim PHP作为一个RESTful API的框架,到目前为止它非常棒。 超级简单,但我有一个问题,我找不到答案。 如何从Slim PHP中的URL获取GET参数?

例如,如果我想使用以下内容:

http://api.example.com/dataset/schools?zip=99999&radius=5 

星期一的情况? 我是否过度了? 提前致谢!

您可以在Slim框架内很容易地做到这一点,您可以使用:

 $paramValue = $app->request()->params('paramName'); 

这里的$ app是一个Slim实例。

或者如果你想更具体

//获取参数

 $paramValue = $app->request()->get('paramName'); 

// POST参数

 $paramValue = $app->request()->post('paramName'); 

你会像这样在特定的路线使用它

 $app->get('/route', function () use ($app) { $paramValue = $app->request()->params('paramName'); }); 

您可以阅读请求对象http://docs.slimframework.com/request/variables/上的文档;

对于Slim 3,您需要使用PSR 7 Request对象上的getQueryParams()方法。

引用文档 :

您可以使用getQueryParams()将查询参数作为Request对象上的关联数组。

您还可以使用getQueryParam($ key,$ default = null)获取单个查询参数值,并使用可选的缺省值(如果参数丢失)。

我修复了我的API接收像这样的json体或URL参数。

 $data = json_decode($request->getBody()) ?: $request->params(); 

这可能不适合每个人,但它为我工作。

对Slim PHP不太了解,但是如果你想从一个URL访问参数,那么你应该使用:

 $_SERVER['QUERY_STRING'] 

你会在Google上find一堆博客post来解决这个问题。 您也可以使用PHP函数parse_url 。

如果您想要参数名称参数

 $value = $app->request->params('key'); 

params()方法将首先searchPUTvariables,然后是POSTvariables,然后是GETvariables。 如果找不到variables,则返回null。 如果您只想search特定types的variables,则可以使用这些方法:

// — GETvariables

 $paramValue = $app->request->get('paramName'); 

// — POSTvariables

 $paramValue = $app->request->post('paramName'); 

// — PUTvariables

 $paramValue = $app->request->put('paramName'); 

如果您希望获取所有参数而不指定参数名称,则可以将其全部格式化为格式键=>值

 $data = json_decode( $app->request->getBody() ) ?: $app->request->params(); 

$ data将是一个包含请求的所有字段的数组,如下所示

 $data = array( 'key' => 'value', 'key' => 'value', //... ); 

希望它可以帮助你!

使用$id = $request->getAttribute('id'); //where id is the name of the param $id = $request->getAttribute('id'); //where id is the name of the param

在Slim 3.0中,以下内容也起作用:

routes.php文件

 require_once 'user.php'; $app->get('/user/create', '\UserController:create'); 

user.php的

 class UserController { public function create($request, $response, array $args) { $username = $request->getParam('username')); $password = $request->getParam('password')); // ... } }