![](/img/trans.png)
[英]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.