session_start();
date_default_timezone_set('GMT');
require 'Slim/Slim.php';
use Slim\Slim;
\Slim\Slim::registerAutoloader();

$app = new \Slim\Slim();

require_once 'item.php';

Это отрывок кода из index.php, застрявший на указанной ошибке при вызове item.php. Здесь содержимое файла

$app->put('/getItem', authorize(), 'getItem');

function getItem() {
  $sql = "SELECT * FROM item";
  $app = Slim::getInstance();
  try {
   $db = getConnection();
   $stmt = $db->query($sql); 
   $item = $stmt->fetchAll(PDO::FETCH_OBJ);
   $db = null;
   $response = $app->response();
   $response->header('Content-Type', 'application/json');
   // Include support for JSONP requests
   if (!isset($_GET['callback'])) {
     echo json_encode($item);
   } else {
     echo $_GET['callback'] . '(' . json_encode($item) . ');';
   }
  } catch(PDOException $e) {
    $error = array("error"=> array("text"=>$e->getMessage()));
    echo json_encode($error);
  }
}

Я обнаружил ошибку на этом $app = Slim::getInstance();

Что не так с моим подходом?

2
Muhaimin 13 Мар 2014 в 08:48
Можете ли вы просто сделать Slim::registerAutoloader(); вместо \Slim\Slim::registerAutoloader();?
 – 
Ian Hunter
13 Мар 2014 в 08:52

2 ответа

Лучший ответ

Полное имя класса Slim (включая пространство имен) - \Slim\Slim, поэтому вам нужно будет использовать это, например

$app = \Slim\Slim::getInstance();

Кроме того, вы можете импортировать символ Slim с помощью оператора use в верхней части вашего скрипта item.php.

use Slim\Slim;
5
Phil 13 Мар 2014 в 08:52

Вы можете использовать этот код для Slim Framework3:

<?php

require "vendor/autoload.php";
use \Slim\App;

$app = new App();

$app->get("/",function(){

    echo "Hello World";

});

$app->get("/test",function(){

    echo "Hello World";

});

$app->run();

?>
-1
Chandra Kumar 20 Июл 2016 в 14:09