如何在Slim微框架中从JSON文件读取数据?

时间:2018-08-19 07:15:15

标签: php slim

如何在Slim框架中从文件读取数据?例如,以下代码可在通常的php应用程序中工作:

<?php
$data= json_decode(file_get_contents('C:\Users\Admin\Desktop\s1\vendor\me.json'), true);
print data["data"][0]["id"];

但是在Slim中该怎么做?我写道:

use Slim\Http\Request;
use Slim\Http\Response;
require 'vendor/autoload.php';

$app = new \Slim\App();
$app->get('/test/', function(Request $reg, Response $res, $args = []){
$data= json_decode(file_get_contents('C:\Users\Admin\Desktop\s1\vendor\me.json'), true);
return $res->$data["data"][0]["id"];
});
$app->run();

我什么也没得到。请告诉我如何解决它,蚂蚁的想法?

2 个答案:

答案 0 :(得分:1)

我发现您的代码存在两个问题。

您正在解码JSON字符串并将其放入$data

$data= json_decode(file_get_contents('C:\Users\Admin\Desktop\s1\vendor\me.json'), true);

但是您正在尝试从$res->$data返回一些信息:

return $res->$data["data"][0]["id"];

这是不正确的。

您需要返回$data["data"][0]["id"]或将其写入响应正文并返回响应:

$app->get('/test/', function(Request $reg, Response $res, $args = []){
    $data= json_decode(file_get_contents('C:\Users\Admin\Desktop\s1\vendor\me.json'), true);
    $res->getBody()->write($data["data"][0]["id"]);
    return $res;
});

另外,您将路径定义为/test/,并以尾随/,这意味着您必须使用带有尾部斜杠的localhost/test/来访问此路由,否则您将收到一个404错误。我建议删除定义中的尾随/

答案 1 :(得分:-1)

尝试以下

$app->get('/test/', function(Request $reg, Response $res, $args = []){
$data= json_decode(file_get_contents('C:\Users\Admin\Desktop\s1\vendor\me.json'), true);
$res->write($data["data"][0]["id"]);
return $res;
});