【发布时间】:2016-03-11 13:55:08
【问题描述】:
我正在使用 Silex 为我的应用程序创建 API,但是我已经创建了执行我的逻辑的类和函数,并且想知道 Silex 是否可以从路由中调用它们。
在我用于路由的文件上,我希望能够连接到我的类,然后在路由中使用函数
require_once('..\class\class.php');
require_once('../vendor/autoload.php');
$app = new Silex\Application();
$app->get('/{id}', function (Silex\Application $app, $id) use () {
$class = new Class();
$data = $class->getData($id);
$data = getData();
return json_encode($data);
});
我想从其他地方通过 id 调用它,然后用它来获取数据,如下所示:
$response =file_get_contents('http://localhost/silex_test/api/router.php/'.$id);
每当我放置类连接时,即使在同一个文件中,它也不会返回任何内容,甚至不会返回字符串。我正在尝试做的事情是否可行,或者我完全误解了 Silex 的功能?
在此先感谢您的帮助,我们将不胜感激,因为我花了几天时间试图解决这个问题。
【问题讨论】:
-
用
file_get_contents(...)显示完整代码 -
@MaxP。目前它只是在我的索引页面上,我正在使用 var_dump 来显示。当我使用 silex 的博客示例时,它会返回,所以我认为这与此无关。
-
如果您打开浏览器并输入此 URL,会发生什么?确保启用开发工具以查看网络状态。您可能遇到了错误,但由于您使用 api 的方式而错过了它。顺便说一句,您想要做的事情是 100% 可能的(使用 Silex 或任何其他框架)。您应该重新配置您的 HTTP 服务器以避免 silex_test/api/router.php 部分(mod_rewrite、PHP 开发服务器等)
-
@mTorres 我尝试通过该 URL 运行它,但它没有返回任何错误,只是一个空白页面。如果我删除类连接,它可以返回字符串。我是否需要在路由连接中的某处声明该类以便 Silex 知道使用它?
-
@mTorres 感谢您的帮助。我调换了课程,它开始起作用了。我跟踪了课堂上不起作用的链条,发现我出于某种我不记得的原因关闭了错误报告。重新打开后,我发现我在课堂上错过了一个不起作用的课堂声明。所以更多的是“我自己很愚蠢”的问题,而不是编码问题。