Php 即使Composer类存在,也找不到它

Php 即使Composer类存在,也找不到它,php,laravel,composer-php,lumen,autoloader,Php,Laravel,Composer Php,Lumen,Autoloader,我正在开发一个Laravel软件包,但我有一个作曲家自动加载的问题。 我的软件包在src文件夹下有两个文件夹。其中一个名为Laravel,另一个名为Telegram。以下是包结构: ./packages .../typhoon ...../src ......./Laravel ........./Providers ............LumenServiceProvider.php ............LaravelServiceProvider.php ......./Telegr

我正在开发一个Laravel软件包,但我有一个作曲家自动加载的问题。 我的软件包在
src
文件夹下有两个文件夹。其中一个名为
Laravel
,另一个名为
Telegram
。以下是包结构:

./packages
.../typhoon
...../src
......./Laravel
........./Providers
............LumenServiceProvider.php
............LaravelServiceProvider.php
......./Telegram
..........Api.php
.....composer.json
该软件包是在SaliBhdr/typhone名称空间下开发的

我在Laravel的composer文件中添加了
packages/typhone/src
目录,如下所示:

    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "SaliBhdr\\Typhoon\\" : "packages/typhoon/src/"
        }
    },
    "autoload": {
        "psr-4": {
            "SaliBhdr\\Typhoon\\": "src/"
        }
    },
并在package composer.json文件中添加
src/
地址,如下所示:

    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "SaliBhdr\\Typhoon\\" : "packages/typhoon/src/"
        }
    },
    "autoload": {
        "psr-4": {
            "SaliBhdr\\Typhoon\\": "src/"
        }
    },
这是奇怪行为的开始。当我执行
php artisan serve
命令时,Laravel抛出一个错误,该错误表示:

 Class 'Salibhdr\Typhoon\Laravel\Providers\LumenServiceProvider' not found 
如果我用
class\u exists('Salibhdr\typhone\Laravel\Providers\LumenServiceProvider')
函数检查类是否存在,它将返回
false
。但如果我检查是否存在
Salibhdr\typhone\Telegram\Api
,它将返回
true

我检查了
autoload_classmap
文件,注意到composer包含了
telegrame
子文件夹下的所有类,但没有
Laravel
子文件夹

为什么作曲家的行为如此怪异?为什么它包含一个子文件夹而不包含另一个子文件夹?这是我每天都做的事情,从来没有见过这样的事情


我急需帮助。如果您试图初始化
Salibhdr\typhone\Laravel\Providers\LumenServiceProvider
,我们将不胜感激,但在您的composer中是
“Salibhdr\\typhone\\”:“src/”

注意作曲家的大写字母
B
。PHP类是区分大小写的,所以您必须确保它既可以是小写的,也可以是大写的


如果修改了
composer.json

您试图初始化
Salibhdr\typhone\Laravel\Providers\LumenServiceProvider
,请确保运行
composer dumpautoload
,但在您的composer中是
Salibhdr\\typhone\\ \:“src/”

注意作曲家的大写字母
B
。PHP类是区分大小写的,所以您必须确保它既可以是小写的,也可以是大写的


如果您修改了
composer.json
,请确保运行
composer dumpautoload

您的
composer.json
在哪里?@ChinLeung它在
typhone
文件夹中您是否检查了
LumenServiceProvider
中的类名是否与文件名匹配?另外,如果您尝试使用
LaravelServiceProvider
,它是否返回true?@ChinLeung我已经完成了所有必要的检查。不,它返回与LaravelServiceProvider相同的输出。laravel和lumen服务提供者都是从抽象服务提供者扩展而来的。laravel文件夹中还有其他类,其中一些类不包含在composer中。但电报文件夹中的所有文件都包括在内我无法复制你的问题。。。我已经用你的文件结构试过了,对我来说效果很好。您是否运行了
composer dumpautoload
?您的
composer.json
在哪里?@ChinLeung它在
typhone
文件夹中您是否检查了
LumenServiceProvider
中的类名是否与文件名匹配?另外,如果您尝试使用
LaravelServiceProvider
,它是否返回true?@ChinLeung我已经完成了所有必要的检查。不,它返回与LaravelServiceProvider相同的输出。laravel和lumen服务提供者都是从抽象服务提供者扩展而来的。laravel文件夹中还有其他类,其中一些类不包含在composer中。但电报文件夹中的所有文件都包括在内我无法复制你的问题。。。我已经用你的文件结构试过了,对我来说效果很好。你运行过composer dumpautoload吗?哦!我没有注意到这一点,我也不知道为什么我会犯那个错误。非常感谢您抽出时间哦!我没有注意到这一点,我也不知道为什么我会犯那个错误。非常感谢您抽出时间