我正在编写的网络服务中有一个奇怪的错误。 当我加载特定网址时,我同时获得了成功和错误?
这就是我在index.php中的内容:
<?php
require_once 'functions/lib.php';
require_once 'core/init.php';
// Ask for request URL that was submitted and define scriptPath. Explode content of REQUEST URL to evaluate validity.
$requestURL = (($_SERVER['REQUEST_URI'] != "") ? $_SERVER['REQUEST_URI'] : $_SERVER['REDIRECT_URL']);
$scriptPath = dirname($_SERVER['PHP_SELF']);
$requestURL = str_replace($scriptPath, "", $requestURL);
$requestParts = explode("/", $requestURL);
// Check for valid api version
$validAPIVersions = array("v1");
$apiVersion = $requestParts[1];
// If API Version not in valid API array return 404, else OK.
if (!in_array($apiVersion, $validAPIVersions)) {
httpResponseCode(404);
echo $GLOBALS['http_response_code'];
echo "<br>" . "API Version not valid";
exit();
}
// Check for valid API endpoint
$validEndPoints = array("tickets");
$endPoint = $requestParts[2];
if (!in_array($endPoint, $validEndPoints)) {
httpResponseCode(404);
echo $GLOBALS['http_response_code'];
echo "<br>" . "Endpoint not valid";
exit();
}
// get the endpoint class name
$endPoint = ucfirst(strtolower($endPoint));
$classFilePath = "$apiVersion/$endPoint.php";
if (!file_exists($classFilePath)) {
httpResponseCode(404);
echo $GLOBALS['http_response_code'];
exit();
}
// load endpoint class and make an instance
try {
require_once($classFilePath);
$instance = new $endPoint($requestParts);
} catch (Exception $e) {
httpResponseCode(500);
echo $GLOBALS['http_response_code'];
exit();
}
这是相应的“Tickets.php”
<?php
echo "OK";
?>
在我的index.php的最后两行中,我正在加载特定的类(在URL中命名)。出于测试目的,我在此文件中有一个“echo”OK。这是我加载我需要的URL时的结果:
http://api.medifaktor.de/v1/tickets
OK
Fatal error: Class 'Tickets' not found in /usr/www/users/kontug/api.medifaktor.de/webservice/index.php on line 45
我得到了我期待的OK和Class Tickets的错误,这是找不到的。第45行是
$instance = new $endPoint($requestParts);
有人可以帮助我吗?
最佳塞巴斯蒂安
答案 0 :(得分:3)
问题是你没有上课&#34;门票&#34;定义。加载tickets.php
文件后,您尝试实例化一个类。加载文件与定义类不同。在tickets.php
(或其他一些包含的文件)中,您需要定义类,如下所示:
class Tickets
{
// some properties here
private $endpoint;
// some methods here
public function __construct($endpoint)
{
$this->endpoint = $endpoint;
}
}
如果您不确定如何使用PHP构建类,请阅读classes手册中的部分。
更新:我在PHP5 +版本的类中添加了一些示例代码。
答案 1 :(得分:1)
尝试以下测试,在'ticket.php'文件中添加:
class Ticket {
public function __construct()
{
echo 'testing';
}
}
然后确保您namespace
或require
该文件。