自动加载 Php 个带有连字符的包
Autoloading Php Packages with Hyphens
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 配置中调整什么才能让 类 自动加载?
您需要恢复对 PSR-4 命名空间前缀的更改:
{
"autoload": {
"psr-4": {
"Company\TableCreator\": ""
}
}
}
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 配置中调整什么才能让 类 自动加载?
您需要恢复对 PSR-4 命名空间前缀的更改:
{
"autoload": {
"psr-4": {
"Company\TableCreator\": ""
}
}
}