[英]Namespace autoloading with composer and PSR-0 not working as expected
[英]namespace autoloading with composer and PSR-0
我想使用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";
}
}
?>
在User.php中
<?php
namespace user;
class User {
public function hello() {
return "hello user";
}
}
?>
在composer.json中
{
"autoload": {
"psr-0": {
"my": "src/app"
}
}
}
当我在Test.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();
?>
我收到此错误:
致命错误:未找到“我的\\用户\\用户”类
致命错误:未找到“我的\\世界\\世界”类
我想念的是什么! 任何的建议都受欢迎! 谢谢。
您的定义中没有名称空间部分“my”。
namespace user;
class User {...}
此类名为\\user\\User
,而不是\\my\\user\\User
。
这同样适用于\\world\\World
。
因此,Composer中的命名空间定义是错误的。 在同一目录中,您需要两个user
和world
定义:
{
"autoload": {
"psr-0": {
"user\\": "src/app",
"world\\": "src/app"
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.