首页 > 解决方案 > Composer 找不到类...但找到同级文件

问题描述

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

看看这两个标题:

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);
}

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

标签: phpcomposer-phpautoload

解决方案


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

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

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


推荐阅读