我做了一个 test项目以了解 composer 和 packagist 的工作原理。项目也在packagist .
一个简单的composer require rakibtg/gowin
将从 packagist 安装包。
但由于某种原因,命名空间没有按预期工作。
这是我的目录结构和 composer 文件。
这是 GoWin.php 文件:
<?php
namespace GoWin;
class GoWin {
public function serve() {
echo 'Lets Win Everybody!';
}
}
这是我尝试使用的 test.php 文件
serve()
方法来自 GoWin
类(class)。 <?php
require_once './vendor/autoload.php';
// use GoWin;
( new GoWin\GoWin() )->serve();
但它无法执行
serve
有这个错误的方法:Fatal error: Uncaught Error: Class 'GoWin\GoWin' not found in
/Users/usr/Desktop/t estGoWin/index.php:7 Stack trace:
0 {main} thrown in /Users/usr/Desktop/testGoWin/index.php on line 7
此刻我无法理解我错过了什么!我还应该使用 psr-0 还是 psr-4?
最佳答案
我通过切换到 PSR-4 解决了这个问题,只需更新 composer.json autolaod
属性如下:
"autoload": {
"psr-4": {
"GoWin\\": "src/"
}
},
关于php - 使用 composer 和 PSR-0 自动加载命名空间未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50015470/