Я пытаюсь создать пакет Hello world с композитором из этого руководства.
http://grossi.io/2013/creating-your-first-composer-packagist-package/
Каким-то образом мне удалось создать и протестировать его полдня назад, но теперь в другом каталоге я пробовал еще несколько раз - не могу заставить его работать и не понимаю, почему я получаю ошибку, которую я покажу позже.
Вот что я делаю:
В каталоге HelloWorld я создаю каталог src. В каталоге src я помещаю файл SayHello.php
namespace HelloWorld;
class SayHello
{
public static function world()
{
return 'Hello World, Composer!';
}
}
Бежать
composer init
После того, как он создает файл composer.json, я редактирую, и в итоге он такой:
{
"name": "vagrant/hello-world",
"description": "test",
"license": "no",
"authors": [
{
"name": "darius",
"email": "[email protected]"
}
],
"minimum-stability": "dev",
"require": {
"php": ">=5.3.0"
},
"autoload": {
"psr-0": {
"HelloWorld": "src/"
}
}
}
Затем я бегу
composer install
Я получаю вывод:
Loading composer repositories with package information
Installing dependencies (including require-dev)
Nothing to install or update
Generating autoload files
Учебник говорит
Установленный Composer создает каталог «тесты» внутри вашего корневого каталога.
Но я не вижу такого каталога, поэтому создаю его сам в каталоге HelloWorld. Возможно, автор что-то пропустил, чтобы добавить.
Затем я создаю файл test.php
require_once __DIR__ . '/../vendor/autoload.php'; // Autoload files using Composer autoload
use HelloWorld\SayHello;
echo SayHello::world();
Бежать:
php tests/test.php
И получить:
Неустранимая ошибка PHP: класс «HelloWorld\SayHello» не найден в /home/vagrant/package_dev/workbench/oitlabs/HelloWorld/tests/test.php в строке 7
Как он теперь может это увидеть? Я попытался добавить в test.php
require_once __DIR__ . '/../src/SayHello.php';
то видит и работает, значит должен видеть файл. Так что это похоже на то, что композитор генерирует неправильный файл автозагрузки или что-то в этом роде. Как я могу отладить это?
Также попробовал те же шаги в другом каталоге, рядом с тем, который мне в первый раз удалось, просто используя пространство имен Hello. Та же ошибка.
Вот еще файл - как выглядит мой пакет, что сгенерировал композитор: http://www58.zippyshare.com/v/Hsfg4pVf/file.html