Composer не генерирует пакет автозагрузки, созданный мной - PullRequest
0 голосов
/ 04 января 2019

Я не хочу добавлять больше к шуму "автозагрузка не работает !!!!!", но я не могу понять эту проблему, и я подумал, что если взглянуть на нее по-новому, то получупроблема гораздо меньше времени.Вот мой файл index.php:

<?php
declare(strict_types=1);

require_once 'vendor/autoload.php';
require_once 'model/PageNav.php';

use ShinePHP\{Crud, CrudException, EasyHttp, EasyHttpException, HandleData, HandleDataException};

// ALWAYS serve over encrypted channels
try {
    EasyHttp::checkHttps();
} catch (EasyHttpException $ex) {
    echo $ex;
}


try {

    // check if it's a GET request, if it is, serve page, if not, do nothing
    if (EasyHttp::isRequestMethod('GET')) {
        $Page = new PageNav('Home', 'view/home.php');
        $Page->buildPage();
        exit;
    }

} 
catch (EasyHttpException $ex) {
    echo $ex;
}

Итак, очевидно, я использую пакет от композитора под названием ShinePHP (его я сделал, и я все еще работаю над документацией, поэтомуСейчас я просто использую его для своих собственных проектов, композитор делает управление пакетами настолько простым!)
ВСЕГДА ... потому что я пишу этот вопрос, я, очевидно, получаю следующую ошибку:

Fatal error: Uncaught Error: Class 'ShinePHP\EasyHttp' not found in /Applications/XAMPP/xamppfiles/htdocs/KRTY/src/index.php:11 Stack trace: #0 {main} thrown in /Applications/XAMPP/xamppfiles/htdocs/KRTY/src/index.php on line 11

Теперь я не трогал файл composer.json вручную, поэтому вот он:

{
    "require": {
        "adammcgurk/shine-php": "~0.0.1"
    },

    "autoload": {
        "psr-4": {
            "ShinePHP\\": "src/"
        }
    }
}

Я не получаю никаких ошибок при запросеФайл vendor/autoload.php (и я попытался изменить путь на что-то, чего не существует, например vendor/alkdjfladksf/autoload.php, и он выдает ошибку, как и должно), я использую PHP-версию 7.2.7 на XAMPP в Mac OS Mojave.Вот структура каталогов, выделенный файл index.php - это файл с кодом выше:
enter image description here

А вот вывод composer dump-autoload -o:

Generating optimized autoload files

И так ... чтобы добавить больше к огню этого вопроса в стеке ... Как мне заставить composer автоматически загружать мое пространство имен ShinePHP с классами, как показано в коде?

1 Ответ

0 голосов
/ 04 января 2019

Эта зависимость не имеет никаких правил автозагрузки , поэтому Composer не знает, где найти класс ShinePHP\EasyHttp.Вам необходимо добавить конфигурацию автозагрузки в composer.json из shine-php пакета:

"autoload": {
    "psr-4": {
        "ShinePHP\\": "src/"
    }
},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...