Composer找不到类…但找到同级文件

问题描述 投票:0回答:2

我知道一个文件夹结构很好,因为它在大多数情况下都可以工作。

看看这两个标题:

namespace Library\GitHubClient\Client\Services;

use Library\GitHubClient\Client\GitHubClient;
use Library\GitHubClient\Client\GitHubService;
use Library\GitHubClient\Client\Objects\GitHubTeam;
use Library\GitHubClient\Client\Objects\GitHubFullTeam;
use Library\GitHubClient\Client\Objects\GitHubUser;
use Library\GitHubClient\Client\Objects\GitHubRepo;

class GitHubOrgsTeams extends GitHubService {

namespace Library\GitHubClient\Client\Services;

use Library\GitHubClient\Client\GitHubClient;
use Library\GitHubClient\Client\GitHubService;

class GithubOrgsRepos extends GitHubService {

第一个文件,作曲家自动加载而没有问题,但是第二个文件找不到。令人头疼的是:他们俩都生活在同一个文件夹中。

实际上,正如您从此父构造函数中看到的,在同一文件夹中存在3个类,只有前2个自动加载。

public function __construct(GitHubClient $client) {
    parent::__construct($client);

    $this->members = new GitHubOrgsMembers($client);
    $this->teams = new GitHubOrgsTeams($client);
    $this->repos = new GithubOrgsRepos($client);
}

作曲家会遇到某种限制问题吗?

php composer-php autoload
2个回答
0
投票

我一直在三个地方塞满这个地方:

  • 文件名中的错字(例如,区分大小写的文件系统上的大写字母不正确)
  • 自动装带器已缓存;运行composer dump-autoload来重新构建自动加载器。
  • 不太常见:您使用的是文件加载器,而不是PSR,需要手动将文件添加到composer.json。

最后要检查的是,您的调用代码(在构造函数中)肯定在顶部具有use Library\GitHubClient\Client\Services\GithubOrgsRepos;语句。


0
投票

如您的评论所建议,这是您可以接受的答案。

这两行有助于注意可能是拼写错误:

    $this->teams = new GitHubOrgsTeams($client);
    $this->repos = new GithubOrgsRepos($client);

第一个具有用于集线器的大写字母H,而不是第二个。

很可能您输错了类名或文件名。

© www.soinside.com 2019 - 2024. All rights reserved.