作曲家自定义 php 包中的命名空间问题,无法执行"use joelwmale/RSSFeedPHP"



我已经创建了自己的作曲家包,但在尝试在包本身之外加载和使用它时遇到了一些问题(即在我的 laravel 应用程序中)。

我的作曲家文件如下所示:

{
    "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 joelwmaleRSSFeedPHP;

我得到:

"Class 'joelwmaleRSSFeedPHP' not found"

即使我已经在我的拉拉维尔应用程序中需要它。我可以看到供应商内部的joelwmale文件夹,也可以看到我的软件包及其作曲家文件。

composer.json 或我设置项目的方式一定有问题 - 但我无法弄清楚。

有什么想法吗?

编辑:存储库链接:https://github.com/joelwmale/rss-feed-php

"autoload": {
    "psr-4": {
        "RSSFeedPHP\": "src/RSSFeedPHP/"
    }
},

这会在 RSSFeedPHP 命名空间下注册您的类。src/RSSFeedPHP/ 目录中的任何内容现在可以像在该命名空间中一样加载。尝试使用

use RSSFeedPHPRSSFeedPHP;

请注意,如果你的文件叫做RSSFeedPHP.php,你的类的名称必须RSSFeedPHP,因此它的命名空间也必须RSSFeedPHP,即

<?php
namespace RSSFeedPHP;
class RSSFeedPHP {}

相关内容

  • 没有找到相关文章

最新更新