使用连字符自动加载Php包

时间:2015-02-20 17:26:25

标签: packagist

Packagist不允许包名称使用大写字母。要解决此问题,建议使用连字符-。因此,我的包名称从TableCreator变为table-creator。不幸的是,这似乎阻止了我的库自动加载,并出现以下错误消息:

Class 'Company\TableCreator\DatabaseField' not found

只要我手动包含特定文件而不是依赖vendor/autoload.php文件,此错误消息就会消失。

我的包composer.json文件如下

{
    "name": "company/table-creator",
    "type": "library",
    "description": "Package creating or editing MySQL tables.",
    "keywords": ["mysql", "mysqli","models"],
    "license": "MIT",
    "authors": [
        {
            "name": "xxx xxx",
            "email": "xxx@xxx.org",
            "role": "Developer"
        }
    ],
    "require": {
        "php": ">=5.3.0"
    },
    "autoload": {
        "psr-4": {
            "company\\table-creator\\": ""
        }
    }
}

文件中声明的命名空间仍为namespace Company\TableCreator;

如果包名称有连字符,我需要在composer配置中调整类以自动加载吗?

1 个答案:

答案 0 :(得分:1)

您需要将更改还原为PSR-4名称空间前缀:

{
    "autoload": {
        "psr-4": {
            "Company\\TableCreator\\": ""
        }
    }
}