PHP Composer Autoload没有加载类

时间:2017-03-04 14:14:21

标签: php composer-php autoloader

不知怎的,我的作曲家自动加载器有问题。我使用Propel作为ORM框架。我的文件夹结构如下所示:

src/BestFreeSites/App
- /Map
- /Base
src/BestFreeSites/Auth
src/BestFreeSites/Framework

我想使用composer autoload包含所有文件。我的composer.json文件如下所示:

"autoload": {
    "classmap": [
    "src/BestFreeSites/App/",
    "src/BestFreeSites/App/Base/",
    "src/BestFreeSites/App/Map/",
    "src/BestFreeSites/Auth/",
    "src/BestFreeSites/Framework/"
]
}

可以访问前三个文件夹中的类,但不能访问Auth和Framework中的类(由我创建)。 我还设置了正确的命名空间。我们以AuthController.php(在文件夹Auth中)为例:

namespace BestFreeSites\Auth;

public class AuthController
{

    public function register($args)
    {
        return $args;
    }
}

我尝试将文件包含在'中使用',就像这样:

use \BestFreeSites\App\SiteQuery;
use \BestFreeSites\App\UserQuery;
use \BestFreeSites\App\RatingQuery;
use \BestFreeSites\Auth\AuthController as Auth;
use \BestFreeSites\Framework\Abstract;

只有最后两个导入无效。 我已经转储了我的自动加载并重新加载它( composer dump-autoload

有人可以指导我朝正确的方向发展吗?

提前致谢:)

亲切的问候, 大卫

1 个答案:

答案 0 :(得分:0)

您真正的\BestFreeSites\Auth\AuthController班级位于何处?你能提供脚本级目录层次结构吗?

您是否正确地需要vendor/autoload.php文件?

或者,如果您只想设置psr4自动加载器,请按照以下代码查看composer.json文件。

{
    "autoload": {
        "psr-4": {
            "BestFreeSites\\": "src/BestFreeSites"
        }
    }
}

//use your AuthController class
$autoController = new \BestFreeSites\Auth\AuthController();

这很简单。我想,这有帮助。