我想用作曲家和PSR-0实现命名空间自动加载,我不知道为什么它不起作用。
有我的文件结构:
src
|app
| world
| World.php
| user
| User.php
vendor
Test.php
composer.json
在世界上.php
<?php
namespace world;
class World {
public function hello() {
return "hello world";
}
}
?>
在用户中.php
<?php
namespace user;
class User {
public function hello() {
return "hello user";
}
}
?>
在作曲家.json
{
"autoload": {
"psr-0": {
"my": "src/app"
}
}
}
当我在测试中对此进行测试时.php
:<?php
require 'vendor/autoload.php';
class Myworld {
public function testhello() {
$w = new mylibrairieWorld();
echo $w->hello();
$u = new myuserUser();
echo $u->hello();
}
}
$m = new Myworld();
$m->testhello();
?>
我收到此错误:
致命错误:找不到类"我的\用户\用户"
致命错误:找不到类"我的\世界\世界"
我想念什么!?欢迎任何建议!谢谢。
您的定义中没有命名空间部分"my"。
namespace user;
class User {...}
这个类被命名为 userUser
,而不是 myuserUser
。
这同样适用于 worldWorld
.
因此,Composer 中的命名空间定义是错误的。您需要为user
和world
定义两个定义,两者都在同一个目录中:
{
"autoload": {
"psr-0": {
"user\": "src/app",
"world\": "src/app"
}
}
}