Пакет Laravel не загружается автоматически - Laravel 5.2

Я создаю пакет laravel, но он не загружается автоматически.

Это раздел автозагрузки моего пакета:

"autoload": {
    "classmap": [
        "src"
    ],
    "psr-4": {
        "Doitonlinemedia\\Translatableroutes\\": "src/"
    }
}

Классы имеют пространство имен как Doitonlinemedia\Translatableroutes

Структура папок такая:

- vendor
- - doitonlinemedia
- - - translatableroutes
- - - - composer.json
- - - - src
- - - - - class1.php

Я добавил ServiceProvider в app.php, например: Doitonlinemedia\Translatableroutes\TranslatableRoutesServiceProvider::class

Но он продолжает говорить: Класс Doitonlinemedia \ Translatableroutes \ TranslatableRoutesServiceProvider не найден

Запускайте composer dump-autoload при каждом изменении.

Что я делаю неправильно?

ИЗМЕНИТЬ

Для разработки я добавил: "Doitonlinemedia\\Translatableroutes\\": "packages/doitonlinemedia/translatableroutes/src" в основной файл composer.json. Но когда мне требуется этот пакет композитора в новом проекте, я получаю указанные выше проблемы.

Чтобы попробовать этот пакет: https://github.com/doitonlinemedia/TranslatableRoutes и следуйте инструкциям.


person Tim van Uum    schedule 23.01.2016    source источник


Ответы (2)


Пространства имен PHP чувствительны к регистру. Вы должны поместить это в свой composer.json

"psr-4": {
    "Doitonlinemedia\\Translatableroutes\\": "src/"
}

вместо этого

"psr-4": {
    "doitonlinemedia\\translatableroutes\\": "src/"
}

У меня работает и без опции classmap

снова запустите composer dump-autoload и повторите попытку.

Изменить

Это работает для меня

{
    "name": "doitonlinemedia/translatableroutes",
    "description": "Create translatable resource routes",
    "authors": [
        {
            "name": "Tim van Uum",
            "email": "[email protected]"
        }
    ],
    "minimum-stability": "stable",
    "license": "MIT",
    "require": {
        "php": ">=5.3.0"
    },
    "autoload": {
        "classmap": [
            "src"
        ],
        "psr-4": {
            "Doitonlinemedia\\Translatableroutes\\": "src/"
        }
    }
}

Кроме того, вы должны добавить этот пакет к своим требованиям "illuminate/support": "~5.2".

Примечание. Похоже, что composer не обновляет записи автозагрузки composer.json файлов, находящихся в пакетах поставщиков, если они не обновляются.

После редактирования вы должны поместить это в свой репозиторий. Переустановите пакет в свой проект.

Если вы все еще активно разрабатываете свой пакет, я рекомендую настроить среду, следуя этим инструкциям: Разработка пакетов в Laravel 5.

Гораздо проще разработать свой пакет без переустановки или постоянного обновления удаленного репозитория.

person Fiete    schedule 23.01.2016
comment
Просто заметил это. Видимо уже заработало. Смотрите мой ответ в ларакасте. Я добавлю этот пакет в требования (кстати, что он делает?) И буду иметь в виду ваше. - person Tim van Uum; 23.01.2016

Благодаря некоторой помощи на форуме laracast. Я обнаружил, что мой проект был немного поврежден, я думаю, потому что пакет уже работал.

https://laracasts.com/discuss/channels/laravel/trouble-autoloading-custom-package-laravel-52.

person Tim van Uum    schedule 23.01.2016