自定义包的类不会使用作曲家自动加载器自动加载



我正在尝试在 Packagist.org 上发布一个新包,但是使用自动加载器系统时遇到了一些麻烦。

当我安装我的软件包(https://packagist.org/packages/gabyfle/gsteam-auth(时,一切都很好,但是当我通过PHP加载它时:

require __DIR__ . "/vendor/autoload.php";
$testing = new ClassSteamAuth('test', 'test');

我收到一个错误,告诉我找不到类命名空间。

Fatal error: Uncaught Error: Class 'ClassSteamAuth' not found in <path>gSteam-testtesting.php:4 Stack trace: #0 {main} thrown in <path>gSteam-testtesting.php on line 4

我已经尝试了每种不同的自动加载约定(PSR0 PSR4(,我还尝试通过 classmap 参数将我的类包含在自动加载器中,但我的类没有加载。

您对如何通过作曲家的自动加载器加载我的类有任何想法吗?

谢谢

我建议您使用PSR-4自动加载。请记住,您必须在命名空间声明的末尾放置尾随反斜杠:

"autoload": {
    "psr-4": {
        "Gabyfle\": "src/"
    }
},

引用作曲家文档:

请注意,与较旧的 PSR-0 样式相反,前缀 (Foo\\( 不存在于文件路径中。

还有:

命名空间前缀必须以 \ 结尾,以避免类似前缀之间的冲突。例如,Foo会匹配FooBar命名空间中的类,因此尾随反斜杠可以解决问题:Foo\和FooBar\是不同的。

所以请记住,如果你从 psr-0 切换到 psr-4

多亏

了@mdexp,我发现了我的班级有什么问题。我在一个文件中定义了两个类,这与 PSR-4 规范不匹配。

我刚刚从文件中删除了一个类,现在一切正常。

谢谢!

相关内容

  • 没有找到相关文章

最新更新