автозагрузка пространства имен с помощью композитора и PSR-0

Я хочу реализовать автозагрузку пространства имен с помощью композитора и 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();
?>

Я получаю такую ​​ошибку:

Неустранимая ошибка: класс "мой \ пользователь \ Пользователь" не найден

Неустранимая ошибка: класс "мой \ мир \ мир" не найден.

что я скучаю !? Любой совет приветствуется! Благодарю.


person 2dar    schedule 17.02.2014    source источник


Ответы (1)


В ваших определениях нет части пространства имен "my".

namespace user; 
class User {...}

Этот класс называется \user\User, а не \my\user\User.

То же самое и с \world\World.

Следовательно, определение пространства имен в Composer неверно. Вам понадобятся два определения для user и world, оба в одном каталоге:

{
    "autoload": {
        "psr-0": {
            "user\\": "src/app",
            "world\\": "src/app"
        }
    }
}
person Sven    schedule 17.02.2014