Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将Slim框架实现到API_Php_Jquery_Slim_Slim 3 - Fatal编程技术网

Php 将Slim框架实现到API

Php 将Slim框架实现到API,php,jquery,slim,slim-3,Php,Jquery,Slim,Slim 3,我已经尝试了很长一段时间,但我不太明白slim的所有功能是如何和为什么工作的。没有Slim,一切都很好,我知道一切是如何运作的。这是我学习ajax、面向对象php和Slim的一个小项目,我从来没有这样做过,所以我真的迷路了 我现在拥有的是一个带有表单的html,它通过ajax将数据发送到一个.php文件。该文件获取数据,运行查询,将结果放入.json字符串中,然后html将结果打印为charts.js画布 这是我用php Select.php学习的课程: <?php require_onc

我已经尝试了很长一段时间,但我不太明白slim的所有功能是如何和为什么工作的。没有Slim,一切都很好,我知道一切是如何运作的。这是我学习ajax、面向对象php和Slim的一个小项目,我从来没有这样做过,所以我真的迷路了

我现在拥有的是一个带有表单的html,它通过ajax将数据发送到一个.php文件。该文件获取数据,运行查询,将结果放入.json字符串中,然后html将结果打印为charts.js画布

这是我用php Select.php学习的课程:

<?php require_once 'Connection.php';

$id     = $_POST['id'];
$from   = $_POST['from'];
$to     = $_POST['to'];

$date = new Select($dbh, $id, $from, $to);
return $dates->select();

class Select {
    private $dbh;
    public function __construct($dbh, $id, $from, $to) {
        $this->dbh = $dbh;
        $this->id = $id;
        $this->from = $from;
        $this->to = $to;
    }
    public function select() {
        $id = $this->id;
        $from = $this->from;
        $to = $this->to;
        $query = ***Ignoring it because it's quite long***

        $results = [];
        while ($arr = $query->fetch(PDO::FETCH_ASSOC)) {
            $results[] = $arr;
        }
        echo json_encode($results);
    }
}
我的ajax脚本generateChart.js:

$.ajax({
    type: 'post',
    url: 'classes/Select.php',
    data: $('form').serialize(),
    success: function (data) {
        var results = JSON.parse(data);
        var chartjsTemp = [];
        var chartjsDate = [];
        for (var i = 0; i < results.length; i++) {
            chartjsTemp.push(results[i].probeTemp);
            chartjsDate.push(results[i].dateProbe);
        }
        var ctx = document.getElementById('myChart').getContext('2d');
        var button = $("#submitButton");
        submitButton.addEventListener("click", function(){
            myChart.destroy();
        });
        var myChart = new Chart(ctx, {
            type: 'line',
            data: {
                labels: chartjsDate,
                datasets: [{
                    label: 'temp',
                    data: chartjsTemp,
                    backgroundColor: "rgba(240,240,240,0.5)"
                }]
            }
        });
    }
});
这就是我试图实现名为slimSelect.php的“Select.php”的地方。我知道这个文件是一个彻底的火车失事,但我几乎是通过尝试和错误,但我绝对没有进步。我不明白,在stackoverflow中,我没有解释它是如何工作的:

<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

require '../vendor/autoload.php';
require 'Autoloader.php';

$app = new \Slim\App;
$app->post('/', function(Request $request) use ($app) {
    $allPostPutVars = $request->getParsedBody();
    $id = $allPostPutVars['id'];
    $from = $allPostPutVars['from'];
    $to = $allPostPutVars['to'];
    include 'Select.php';
});
$app->run();
现在,它给了我致命的错误:没有找到类“Select”,尽管它确实存在。如何让斯利姆和我的同学们一起工作,我简直想不通。如果有人能向我解释我是如何做到这一点的,或者至少能为我指明正确的方向,我会非常感激

编辑:修改slimSelect.php。我现在得到一个致命错误:在第11行调用未定义的Slim\Http\Response::getAttribute方法
Edit2:有些东西起作用了!!!!我的一个主要问题是我完全搞乱了$app->post中的函数,这给了我$request之类的错误。魔法发生在第9行和第10行。现在它将返回.json并打印图表!现在,我想知道如何调用Select类而不包含它。

您的Select类不是自动加载的,这就是为什么会出现此错误。你看过slim网站上的推荐吗。开始使用Slim的最简单方法是通过运行以下bash命令,以Slim Skeleton为基础创建一个项目:

$php composer.phar创建项目slim/slim skeleton[我的应用程序名]
. 我通常使用这个框架应用程序来构建我的slim应用程序

要在slimSelect中使用该类,可能需要包含Select.php。php@AhmedGinani当我执行$date=new Select时,自动加载器不应该处理它吗?据我所知,它不应该t@AhmedGinani可以我现在将它包含在slimSelect.php中,并将函数改为functionRequest$id,$from,$to。还添加了这个来尝试:$id=$id->getAttribute'id';from和to也一样。现在,我在第二个getAttribute上调用了未定义的方法Slim\Http\Response::getAttribute。为什么会这样?做一件事,将Select.php放在models文件夹中,然后尝试获取$date=new\models\Select;但是您的类应该扩展,例如类'Select extends\Slim\Middleware{Yes'。我做了Hello,{name}示例来了解它是如何工作的等等,但尽管如此简单,我看不到将其应用于我的项目的方法:/