Проблема с пространством имен в пользовательском php-пакете, не в состоянии "использовать joelwmale / RSSFeedPHP" - PullRequest
0 голосов
/ 28 декабря 2018

Я создал свой собственный пакет composer, но у меня возникают некоторые проблемы при попытке загрузить и использовать его вне самого пакета (т.е. в моем приложении laravel).

Мой файл composer выглядит следующим образом:

{
    "name": "joelwmale/rss-feed-php",
    "type": "library",
    "description": "RSS Feeds for PHP is a very small, lightweight, and easy-to-use library for consuming an RSS feed.",
    "keywords": [
        "rss", 
        "feed", 
        "php"
    ],
    "homepage": "https://github.com/joelwmale/rss-feed-php",
    "support": {
        "issues": "https://github.com/joelwmale/rss-feed-php/issues",
        "source": "https://github.com/joelwmale/rss-feed-php"
    },
    "license": "MIT",
    "authors": [
        {
            "name": "Joel Male",
            "email": "joel@joelmale.com",
            "homepage": "https://www.joelmale.com",
            "role": "Author"
        }
    ],
    "minimum-stability": "dev",
    "require": {
        "php": "^7.1",
        "ext-simplexml": "*",
        "nesbot/carbon": "^1.26.3"
    },
    "require-dev": {
        "phpunit/phpunit": "^7.5",
        "phpstan/phpstan": "^0.11.0@dev"
    },
    "autoload": {
        "psr-4": {
            "RSSFeedPHP\\": "src/RSSFeedPHP/"
        }
    },
    "autoload-dev": { 
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "scripts": {
        "test": [
            "@phpunit",
            "@phpcs"
        ],
        "phpunit": "vendor/bin/phpunit",
        "phpcs": "php-cs-fixer fix -v --diff --dry-run",
        "phpstan": "phpstan analyse --configuration phpstan.neon --level 3 src tests"
    },
    "extra": {
        "laravel": {
            "providers": [
                "RSSFeedPHP\\Laravel\\ServiceProvider"
            ]
        }
    }
}

А мой основной класс находится в: src/RSSFeedPHP/RSSFeedPHP.php.Однако, когда я пытаюсь загрузить его в мое приложение laravel:

use joelwmale\RSSFeedPHP;

, я получаю:

"Class 'joelwmale\RSSFeedPHP' not found"

Даже если мне это требуется в приложении laravel.Я вижу папку joelwmale внутри vendor, а также мой пакет и его файл composer.

Должно быть, что-то не так с composer.json или с тем, как я настроил проект - но я не могу 'не понимаю.

Есть идеи?

Редактировать: Репо ссылка: https://github.com/joelwmale/rss-feed-php

1 Ответ

0 голосов
/ 28 декабря 2018
"autoload": {
    "psr-4": {
        "RSSFeedPHP\\": "src/RSSFeedPHP/"
    }
},

Регистрирует ваш класс в пространстве имен RSSFeedPHP.Все, что находится в каталоге src / RSSFeedPHP / , теперь может быть загружено так, как если бы оно находилось в этом пространстве имен.Попробуйте использовать

use RSSFeedPHP\RSSFeedPHP;

Обратите внимание, что имя вашего класса должно быть RSSFeedPHP, если ваш файл называется RSSFeedPHP.php , и его пространство имен должно быть такимтакже RSSFeedPHP, т.е.

<?php

namespace RSSFeedPHP;

class RSSFeedPHP {}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...