发布于2026-07-11 阅读(0)
扫一扫,手机访问
先说几个核心判断:很多开发者写好了 PHP 包,推上 GitHub,结果别人用 composer requirecomposer.json 配置和自动加载规则上,而不是代码本身。下面把几个关键点掰开揉碎说清楚。

Packagist 不是“看到 GitHub 仓库就收录”,它只认 composer.json 里几个关键字段是否合规:
name 必须是 vendor/name 格式(如 myorg/http-client),不能是 http-client 或 MyOrg/HttpClient——大小写敏感,斜杠位置固定,少一个都不行。type 显式设为 library,否则可能被当成 project 或 metapackage 过滤掉。autoload 必须显式声明,哪怕只用 PSR-4:{ "autoload": { "psr-4": { "MyOrg\HttpClient\": "src/" } } }注意命名空间末尾的双反斜杠和路径结尾的斜杠,一个都不能少。license 字段不可省略,填 "MIT" 最稳妥。Packagist 强制校验该字段,缺了直接拒收。composer require 找不到你的包不是 GitHub 地址写错了,而是 Packagist 没同步或没权限抓取:
composer config --global github-oauth.github.com 。name 后本地缓存会卡住——删掉主项目里的 vendor/ 和 composer.lock,再运行 composer clear-cache。Could not parse version constraint?大概率是 composer.json 里写了死版本号 "version": "1.0.0",删掉它——版本靠 Git tag 控制。require别反复 push → 等同步 → composer update,太慢了。用 path 类型仓库才是正解:
composer.json 的 repositories 里加一段:"repositories": [ { "type": "path", "url": "../my-http-client" } ]composer require myorg/http-client:dev-main(注意用实际分支名,不是 dev-master)。composer update myorg/http-client,无需提交、打 tag。path 方式仅限开发,上线前必须删掉该 repositories 条目,否则部署环境会找不到路径。很多人配完 PSR-4 就以为万事大吉,但 Composer 不会主动告诉你映射失败:
composer dump-autoload -o 强制重生成优化 autoload 文件。composer show myorg/http-client,看输出里是否明确列出 autoload 路径(比如 psr-4 MyOrg\HttpClient\ => src/)。Package not found,说明 name 不匹配或路径写错——不是代码没加载,是根本没注册进 Composer 的包索引。最常被跳过的一步就是验证 autoload 是否真正注册成功。composer show 的输出比 require 不报错更有说服力,后者可能只是碰巧加载了其他同名类。花几十秒跑一下这个命令,能避免后面浪费半天排查时间。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8