Composer,我的包中的类没有在使用它的应用程序中自动加载

Posted

技术标签:

【中文标题】Composer,我的包中的类没有在使用它的应用程序中自动加载【英文标题】:Composer, class within my package is not being autoloaded in application using it 【发布时间】:2015-10-26 23:35:12 【问题描述】:

我正在创建一个模块,该模块将包含在多个项目中。但是,在使用模块的项目中,自动加载器似乎没有在模块中包含该类。

模块结构(等)如下:

git仓库中的目录结构:

/
/composer.json
/src/
/src/EbayAPI.php

composer.json:


    "name": "jodes/ebay-api",
    "autoload": 
        "psr-4" : 
            "Jodes\\EbayAPI\\" : "src"
        
    

EbayAPI.php:

<?php
namespace Jodes;
class EbayAPI 

我尝试将其包含在其中的应用程序具有以下内容:

composer.json


    "require": 
        "behat/behat": "@stable",
        ....other requirements in here...
        "jodes/ebay-api": "dev-master"
        ,
    "config": 
        "bin-dir": "bin/"
    ,
    "repositories": [
        
            "type": "vcs",
            "url": "https://Jody@bitbucket.org/Jody/ebay_api.git"
        
    ]
    

想要通过自动加载器使用我的包的php文件是:

<?php

use Jodes\EbayAPI;
require_once 'vendor/autoload.php';

class HelloWorld 
    public function __construct()
        $ebay = new EbayAPI();
    

我得到的错误是

致命错误:找不到类“Jodes\EbayAPI”

我做错了什么? 谢谢

【问题讨论】:

【参考方案1】:

感谢@Danack 聊天,解决方案很简单:

"Jodes\\EbayAPI\\" : "src" 更改为"Jodes\\" : "src"

(一旦他发布他的答案,我会删除这个答案)

【讨论】:

以上是关于Composer,我的包中的类没有在使用它的应用程序中自动加载的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 外部的包中使用 Laravel 外观(缓存、日志、存储)

不推荐使用 composer require-dev 安装 phpunit?

Laravel 控制器和包中的路由?

Java eclipse中创建项目以后缺省包和命名的包有啥区别?

composer 将远程的包更改为本地开发模式

Java中的包(package)详情解释