使用作曲家和 PSR-0 自动加载命名空间



我想用作曲家和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 中的命名空间定义是错误的。您需要为userworld定义两个定义,两者都在同一个目录中:

{
    "autoload": {
        "psr-0": {
            "user\": "src/app",
            "world\": "src/app"
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新