【发布时间】:2021-05-21 01:20:27
【问题描述】:
我正在为我的框架的功能制作一个作曲家库,但我遇到了这个问题,问题在于使用 psr-4 自动加载。
我的配置
我有以下结构
├───src
├───test
└───vendor
├───composer
├───symfony
│ ├───polyfill-ctype
│ └───polyfill-mbstring
│ └───Resources
│ └───unidata
├───twig
│ └───twig
│ ├───doc
│ │ ├───filters
│ │ ├───functions
│ │ ├───tags
│ │ └───tests
│ └───src
│ ├───Cache
│ ├───Error
│ ├───Extension
│ ├───Loader
│ ├───Node
│ │ └───Expression
│ │ ├───Binary
│ │ ├───Filter
│ │ ├───Test
│ │ └───Unary
│ ├───NodeVisitor
│ ├───Profiler
│ │ ├───Dumper
│ │ ├───Node
│ │ └───NodeVisitor
│ ├───RuntimeLoader
│ ├───Sandbox
│ ├───Test
│ ├───TokenParser
│ └───Util
└───xenframe
└───hello
└───src
最后一个文件夹是我的库,里面有 hello 文件夹。
在 hello 文件夹的根目录中,我有一个 composer.json 和一个 src 文件夹。
composer.json
{
"name": "xenframe/hello",
"type": "library",
"license": "MIT",
"authors": [
{
"name": "XENONMC",
"email": "support@xenonmc.xyz"
}
],
"minimum-stability": "stable",
"require": {
},
"autoload": {
"psr-4": {
"hello\\": "/src"
}
}
}
src/文件夹里面是主文件->index.php。
index.php
<?php
namespace xenframe\hello;
class App {
function __construct() {
echo "object constructed";
}
}
echo "hello world was loaded";
现在,用法在我的根目录index.php。
index.php
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$root = str_replace('\\', '/', __DIR__);
// setup composer autoloader
require_once $root . '/vendor/autoload.php';
// visit us as https://xenonmc.xyz
use xenframe\hello\App;
$hi = new App();
我尝试了什么
o) 使用 psr-4 如下"xenframe\\hello": "src/"。
o) 使用了类路径,我不喜欢这个,因为 psr-4 是 composer 推荐的标准。
o) 使用 psr-0,我也没有选择这个,因为有很多冗长。
谢谢!
【问题讨论】:
-
当你运行
composer update时,错误是什么...? -
它是本地安装的,我没有看到任何错误,我尝试
composer dumpautoload重新生成自动加载composer.json。 -
我觉得应该是 "xenframe\\hello\\": "xenframe/hello/src/"
-
哦,我只是在测试你的代码。我必须将
index.php中的src重命名为App.php,这与文件中的类名有关。还在composer.json的psr-4部分中使用了"xenframe\\hello\\": "src/",它开始工作了。 -
您尝试过什么使您的代码符合 PSR4 标准?如果给出任何错误消息,请编辑您的问题以包含它 - 我会假设它包含有关问题所在的提示
标签: php composer-php psr-4