我已经创建了自己的composer程序包,但是尝试在程序包本身之外(即在我的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 joelwmale\RSSFeedPHP;
我得到:
"Class 'joelwmale\RSSFeedPHP' not found"
即使我在laravel应用程序中需要它,也是如此。我可以看到供应商内的joelwmale文件夹,也可以看到我的软件包及其作曲家文件。
composer.json或我设置项目的方式一定有问题-但我无法弄清楚。
有什么想法吗?
答案 0 :(得分:2)
"autoload": {
"psr-4": {
"RSSFeedPHP\\": "src/RSSFeedPHP/"
}
},
这会将您的类注册在RSSFeedPHP
名称空间下。现在可以加载 src / RSSFeedPHP / 目录中的所有内容,就像在该命名空间中一样。尝试使用
use RSSFeedPHP\RSSFeedPHP;
请注意,如果文件名为 RSSFeedPHP.php ,则类的名称必须为RSSFeedPHP
,因此其名称空间也必须为RSSFeedPHP
,即
<?php
namespace RSSFeedPHP;
class RSSFeedPHP {}