Загрузка локального пакета с использованием Composer (PHP) - PullRequest
0 голосов
/ 21 марта 2020

Я не могу загрузить локальный класс, используя composer.

Структура каталогов и файлы ключей следующие:

/vendor/pisukes/hello-world/composer.json
/vendor/pisukes/hello-world/src/HelloWorld.php
/vendor/autoload.php
/html/index.php
/composer.json

Composer. json под привет -world:

{
    "name": "pisukes/hello-world",
    "type": "library",
    "minimum-stability": "dev",    
    "autoload": {
        "psr-4": {
            "HelloWorld\\": "src/"
        }
    }       
}

Composer. json в root:

{    
    "repositories": [
        {
            "type": "path",
            "url": "./vendor/pisukes/hello-world"
        }
    ],
    "require": {
        "pisukes/hello-world": "@dev"
    }
}

Вывод «composer update» не показывает ошибок:

Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files

HelloWorld. php:

namespace HelloWorld;

class SayHello
{
    public static function world()
    {
        return 'Hello World!';
    }

}

index. php:

require_once '../vendor/autoload.php';
use HelloWorld\SayHello;
echo SayHello::world();

Когда я запускаю "php index. php", я получить класс не найдена ошибка:
PHP Неустранимая ошибка: Uncaught Ошибка: Класс 'HelloWorld \ SayHello'

Если я переместить HelloWorld. php в / html каталог и обновите оператор require_once соответственно, я получаю ожидаемый вывод ...

1 Ответ

0 голосов
/ 21 марта 2020

Мне удалось решить проблему, используя:
composer dumpautoload -o

Обратите внимание, что я пробовал 'composer dumpautoload' но не удалось, мне нужно было использовать флаг -o , чтобы он работал.

Согласно справке Composer:
-o, --optimize Оптимизирует пакеты PSR0 и PSR4 для загрузки вместе с классами, что хорошо для производства

...