繁体   English   中英

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

[英]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中的命名空间定义是错误的。 在同一目录中,您需要两个userworld定义:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM