Composer 没有找到 class...但是找到了兄弟文件

Composer doesn't find class...but find the sibling file

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

看看这两个 headers:

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 {

第一个文件,作曲家自动加载没有问题,但第二个文件找不到。 head-scratcher 是:它们都在同一个文件夹中。

事实上,正如您从这个 parent 构造函数中看到的那样,有 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);
}

作曲家是否遇到某种限制问题?

我一直在三个地方填充它:

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

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

As suggested in your comment, here's an answer you may accept.

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

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

第一个的 hub 是大写的 H,第二个不是。

您可能输入了错误的 class 名称或文件名。