【问题标题】:Autoloading Php Packages with Hyphens使用连字符自动加载 PHP 包
【发布时间】:2015-02-20 17:26:24
【问题描述】:

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;

既然包名有连字符,我需要在作曲家配置中调整哪些类以自动加载?

【问题讨论】:

  • 似乎这也是我的情况,但尚未调查原因,但下面的解决方案似乎无助于加载我的无连字符类,无论如何packagist需要没有大写字母的包,但我仍然认为包可以小写命名,类可以保持蛇形

标签: packagist


【解决方案1】:

您需要恢复对 PSR-4 命名空间前缀的更改:

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

【讨论】:

    猜你喜欢
    • 2017-10-08
    • 2018-10-07
    • 2012-03-14
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多