未捕获错误:找不到类'BreweryDBSDK \ BreweryDBSDK'

时间:2017-09-24 16:20:35

标签: php

我为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>

1 个答案:

答案 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

加载