Почему моя функция GET моего API REST не возвращает никакого значения?

Я использую XAMPP с PhpMyAdmin для хранения моей базы данных, и я пытаюсь сделать REST API, но у меня нет хороших результатов. Для этого я использую Slim framework.

Я поместил все файлы рамок Slim в папку с именем project внутри /htdocs в папке xampp и я создаю файлы connect.php и api.php . Я также меняю index.php на использование обоих файлов, о которых я упоминал ранее.

Я сконфигурировал свои файлы connect.php и index.php и я создал свой метод GET в файле api.php но когда я пытаюсь получить информацию о том, что есть в базе данных, я не могу получить никакого значения.

Оба файла, я имею в виду, connect.php и api.php находятся внутри папки с именем app а затем они находятся в другой папке с именами libs и libs соответственно.

 /project/app/libs/connect.php /project/app/routes/api.php 

Я поставил здесь весь код, который у меня есть:

index.php

 <?php require 'Slim/Slim.php'; \Slim\Slim::registerAutoloader(); $app = new \Slim\Slim(); define("SPECIALCONSTANT",true); require 'app/libs/connect.php'; require 'app/routes/api.php'; $app->run(); ?> 

connect.php

 <?php if(!defined("SPECIALCONSTANT")) die("Access denied"); function getConnection() { try{ $db_username = "root"; $db_password = ""; $connection = new PDO("mysql:host=localhost;dbname=project",$db_username,$db_password); $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); }catch(PDOException $e) { echo "Error: " . $e->getMessage(); } return $connection; } ?> 

api.php

 <?php if(!defined("SPECIALCONSTANT")) die("Access denied"); $app->get("/users/",function() use($app) { try{ $connection = getConnection(); $dbh = $connection->prepare("SELECT * FROM users"); $dbh->execute(); $users = $dbh->fetchAll(); $connection = null; $app->response->headers->set("Content-type","application/json"); $app->response->status(200); $app->response->body(json_encode($users)); }catch(PDOException $e) { echo "Error: " . $e->getMessage(); } }); 

Мое имя базы данных – это project а таблица, которую я имею в моей базе данных, называется users . Эта база данных хранится на моем phpmyadmin .

Затем я пытаюсь вернуть значения, которые у меня есть в этой таблице, с моим методом get помещающим мой url localhost/project/users/ но он не работает. Я просто увидел пустую страницу, и я видел в Интернете, что мне придется дать мне те ценности, которые у меня есть в моем столе.

Я, хотя моя проблема могла быть в headers , status и body потому что я не мог их правильно понять, и я искал их в документации, но мне это не очень помогло. Страницы, которые я искал, были:

http://docs.slimframework.com/response/headers/ http://docs.slimframework.com/response/status/ http://docs.slimframework.com/response/body/

Поэтому, пожалуйста, если вы также можете добавить некоторую информацию, чтобы очистить эти понятия, я буду так благодарен всем вам.

Я действительно новичок в API REST, и я не вижу свою ошибку (я использую учебник). Почему это не работает?

EDIT: Я пробовал предложение Абдо Аделя, но он также не работал. Это дает мне следующую ошибку.

Детали

 Type: ErrorException Code: 8 Message: Undefined variable: users File: C:\xampp\htdocs\proyecto\app\routes\api.php Line: 21 --> Here it's the line when I have echo sentence 

след

 0 C:\xampp\htdocs\project\app\routes\api.php(21): Slim\Slim::handleErrors(8, 'Undefined varia...', 'C:\\xampp\\htdocs...', 21, Array) 1 [internal function]: {closure}() 2 C:\xampp\htdocs\project\Slim\Route.php(468): call_user_func_array(Object(Closure), Array) 3 C:\xampp\htdocs\project\Slim\Slim.php(1357): Slim\Route->dispatch() 4 C:\xampp\htdocs\project\Slim\Middleware\Flash.php(85): Slim\Slim->call() 5 C:\xampp\htdocs\project\Slim\Middleware\MethodOverride.php(92): Slim\Middleware\Flash->call() 6 C:\xampp\htdocs\project\Slim\Middleware\PrettyExceptions.php(67): Slim\Middleware\MethodOverride->call() 7 C:\xampp\htdocs\project\Slim\Slim.php(1302): Slim\Middleware\PrettyExceptions->call() 8 C:\xampp\htdocs\project\index.php(19): Slim\Slim->run() 9 {main} 

EDIT2: Теперь я знаю, что проблема в json_encode потому что это дает мне ошибку: JSON_ERROR_UTF8 когда я использую json_last_error() . К моменту, когда я не смог его решить.

изменение

 $app->response->headers->set("Content-type","application/json"); $app->response->status(200); $app->response->body(json_encode($users)); 

в

 header("HTTP/1.1 200"); header("Content-Type:application/json; charset=utf-8"); echo json_encode($users);