超薄路线传递到另一个文件返回值

时间:2016-06-28 07:38:30

标签: php routes logic slim

我有文件夹结构,如下所示:

|/app 
|-/db/users.php
|/Slim
|/vendor
|index.php

index.php内部:

require 'vendor/autoload.php';

$app = new Slim\App();

$app->get('/{action}/{type}/{props}', function ($request, $response, $args) {
    $jenis_user = strtolower($args['type']);
    $aksi = strtolower($args['action']);
    $prop = strtolower($args['props']);

    $target_loc = "";

    if($aksi == 'get'){

        // the parameter is using the following format
        // action=XX&type=YY&props=ZZ;
        $target_loc = "./app/db/users.php?action=". $aksi . "&type=" . $jenis_user . "&props=" . $prop ;

        // #Tips :: data extracted are in Array Format ::
        $file = file_get_contents($target_loc);
        $response->write(json_encode($file));

    }

    return $response;
});

我的目的是获取一个整数值,如果我在浏览器中使用以下路径:

http://api.myweb.com/get/seller/totalNumber

但似乎我编写传递参数的路由的方式是错误的:我收到了

的警告
  

警告:file_get_contents(./ app / db / users.php?action = get& type = seller& props = totalnumber):无法打开流

我该如何解决?

1 个答案:

答案 0 :(得分:0)

您正试图在users.php?action=get&type=seller&props=totalnumber协议中获取名称为file://且不存在的文件,当您真正做到这一点时,您需要额外指定{{1} }或http这样的协议:

https

它会成功。

注意:这是一个糟糕的结构,当你为此定义一个函数或类时会更好,它可能是这样的:

<强>的functions.php

$content = file_get_contents('http://example.com/users.php?x=y');

index.php 或路线文件

function getUsers($type, $props) {
    // do your stuff
    return $yourUsers;
}

然后你不需要include 'functions.php'; // include the functions $app = new Slim\App(); $app->get('/{action}/{type}/{props}', function ($request, $response, $args) { $jenis_user = strtolower($args['type']); $aksi = strtolower($args['action']); $prop = strtolower($args['props']); if($aksi == 'get'){ $users = getUsers($jenis_user, $prop); // execute the function to collect the user $response->write(json_encode($users )); } return $response; });