gpt4 book ai didi

php - 使用 composer 和 PSR-0 自动加载命名空间

转载 作者:行者123 更新时间:2023-12-04 17:00:28 25 4
gpt4 key购买 nike

我想使用 composer 和 PSR-0 实现命名空间自动加载,但我不知道为什么它不起作用。
有我的文件结构:

src
|app
| world
| World.php

| user
| User.php
vendor
Test.php
composer.json
World.php
<?php

namespace world;
class World {
public function hello() {
return "hello world";
}
}
?>
用户.php
<?php
namespace user;
class User {
public function hello() {
return "hello user";
}
}
?>
composer.json
{
"autoload": {
"psr-0": {
"my": "src/app"
}
}
}
当我在 中测试时测试.php :
<?php
require 'vendor/autoload.php';

class Myworld {
public function testhello() {
$w = new my\librairie\World();
echo $w->hello();
$u = new my\user\User();
echo $u->hello();
}
}

$m = new Myworld();
$m->testhello();
?>
我收到此错误:

Fatal error: Class 'my\user\User' not found

Fatal error: Class 'my\world\World' not found


我想念什么!?任何的建议都受欢迎!谢谢。

最佳答案

您的定义中没有 namespace 部分“my”。

namespace user; 
class User {...}

此类名为 \user\User , 不是 \my\user\User .

这同样适用于 \world\World .

因此,Composer 中的命名空间定义是错误的。您需要两个定义 userworld , 都在同一个目录中:
{
"autoload": {
"psr-0": {
"user\\": "src/app",
"world\\": "src/app"
}
}
}

关于php - 使用 composer 和 PSR-0 自动加载命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21841216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com