我为BreweryDB.com创建了一个SDK但是当我在index.php中使用它时出现错误
未捕获错误:未找到类'BreweryDBSDK \ BreweryDBSDK'
BreweryDBSDK.php
<?php
namespace BreweryDBSDK;
use BreweryDBSDK\API\Beer as BeerAPI;
use BreweryDBSDK\HttpClient\HttpClientInterface;
use BreweryDBSDK\HttpClient\HttpClient;
class BreweryDBSDK
{
/**
* @var string
*/
private $apiKey;
/**
* @var HttpClientInterface
*/
private $httpClient;
public function __construct($apiKey)
{
$this->apiKey = $apiKey;
$this->httpClient = new HttpClient($this->apiKey);
}
public function beer()
{
return new BeerAPI($this);
}
}
的index.php
<?php
use BreweryDBSDK\BreweryDBSDK;
$breweryDBSDK = new BreweryDBSDK('ca162a740060a64de5658a4627ddb091');
?>
<html>
<head>
</head>
<body>
Hello
</body>
</html>
答案 0 :(得分:1)
您需要在BreweryDBSDK.php
index.php
如果你正确地分离了你的班级逻辑,
require_once __DIR__ . "/path/to/BreweryDBSDK/BreweryDBSDK.php";
应该使用。另外,不要忘记包含所有其他文件:
require_once __DIR__ . "/path/to/BreweryDBSDK/API/Beer.php";
require_once __DIR__ . "/path/to/BreweryDBSDK/HttpClient/HttpClientInterface.php";
require_once __DIR__ . "/path/to/BreweryDBSDK/HttpClient/HttpClient.php";
另一种选择是设置一个自动加载器类并使用spl_autoload_register注册自动加载器。设置作曲家项目时,您可以免费获得自动加载器功能;)
修改强>
对于作曲家解决方案,您必须在composer.json
中添加类似的内容"autoload": {
"psr-4": { "BreweryDBSDK\\": "path/to/classes/root/"}
}
然后你必须安装(或更新)作曲家,然后不要忘记通过以下方式包含autloadfile:
require_once __DIR__ . '/vendor/autoload.php';
这必须包含在index.php
以及您直接请求的所有文件中。不需要将它包含在所有类中,因为它们都应该由其他类加载,而这些类首先由index.php