簡體   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