Композитор не находит класс ... но найти файл одного уровня - PullRequest
0 голосов
/ 01 декабря 2019

У меня есть структура папок, и я знаю, что она в порядке, потому что она работает ... по большей части.

Посмотрите на эти 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);
}

Композитор страдает каким-то ограничивающим вопросом?

Ответы [ 2 ]

0 голосов
/ 01 декабря 2019

Как предлагается в вашем комментарии, вот ответ, который вы можете принять.

Эти две строки помогают заметить, что, вероятно, является опечаткой:

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

Первыйу одного есть заглавная буква H для хаба, а не у второго.

Скорее всего, вы либо опечатали имя класса или имя файла.

0 голосов
/ 01 декабря 2019

Есть три места, где я постоянно заполняю это:

  • Опечатка в имени файла (например, неправильно прописная буква в чувствительной к регистру файловой системе)
  • автозагрузчик кешируется;запустите composer dump-autoload, чтобы пересобрать автозагрузчик.
  • Менее часто: вы используете загрузчик файлов, а не PSR, и файл необходимо добавить в composer.json вручную.

Последнее, что нужно проверить, это то, что ваш вызывающий код (в конструкторе) определенно имеет оператор use Library\GitHubClient\Client\Services\GithubOrgsRepos; вверху.

...