PHP 资源库 · 进阶与实战导航
PHP 的资源不缺,缺的是筛选。GitHub 上标 PHP 的仓库有上百万个,
搜索结果按星数一排,前面全是模板站和采集脚本。这套资料解决的就是这件事:
把真正值得看的仓库挑出来,按「你要干什么」组织好。
一、这套资料是什么
901 个仓库,每个带四个标签:
| 维度 | 取值 | 回答什么 |
|---|---|---|
用途 cat |
19 类(学习/框架/组件/应用/安全…) | 它是干什么的 |
技术栈 stack |
12 类(native/laravel/symfony/wordpress…) | 它属于哪个生态 |
阶段 level |
beginner / intermediate / advanced | 什么水平该看 |
核心 core |
true / false(142 个为 true) | 是否绕不过去 |
采集方式:GitHub Search API 共 55 组查询(35 组英文关键词 + 20 组中文关键词
+ 18 组维度检索),加 226 个领域专家先验清单逐个核验,合并去重后原始池 1910 个,
按三重信号过滤掉 1011 个噪声(非 PHP 项目、采集站、模板站、低星无信号项),
再人工校准头部 180 余个的分类归属,撰写分册时又补录若干高价值遗漏项,最终 901 个。
这不意味着 901 个都要看。 core 的 142 个是主干,其余按需取用。
二、六类常见需求,直接跳到对应分册
| 你的问题 | 看哪 | 典型命令 |
|---|---|---|
| 想系统学 PHP,不知道顺序 | references/10-learning.md |
find_php.py --cat learning |
| 快面试了,要突击 | references/20-interview.md |
find_php.py --cat interview |
| 想横向看看还有什么 | references/30-awesome.md |
find_php.py --cat awesome |
| 选框架 / 挑 Laravel 包 | references/40-frameworks.md |
find_php.py --stack laravel |
| 某个功能该用哪个库 | references/50-components.md |
find_php.py jwt |
| 想找项目练手或二次开发 | references/60-projects.md |
find_php.py --cat application |
| 代码质量 / 安全加固 | references/70-quality-security.md |
find_php.py --cat security |
| 性能 / 并发 / 部署 | references/80-performance-devops.md |
find_php.py --cat async-performance |
三、检索脚本
scripts/find_php.py,纯标准库,不需要装任何东西。
cd <技能目录>
# 总览:分类分布 + 每类前三个仓库
python3 scripts/find_php.py
# 关键词检索(匹配仓库名、简介、topics、分类名、技术栈;多词默认取交集)
python3 scripts/find_php.py 队列
python3 scripts/find_php.py swoole coroutine
python3 scripts/find_php.py --any jwt oauth # 多词取并集
python3 scripts/find_php.py 中文
# 按维度筛
python3 scripts/find_php.py --cat learning
python3 scripts/find_php.py --cat component --min-stars 10000
python3 scripts/find_php.py --stack laravel --level advanced
python3 scripts/find_php.py --core --top 30
python3 scripts/find_php.py --level beginner --min-stars 3000
# 机器可读
python3 scripts/find_php.py --cat security --json
# 列出所有分类
python3 scripts/find_php.py --cats
输出里 ★ 表示核心必读,⚠️已归档 表示仓库已停止维护。
多词语义:默认严格交集(每个词都得命中)。交集为空时会自动降级为并集、
在输出头部标注「交集为空,已按任一命中扩充」,避免一次查询直接归零。
想主动取并集用 --any。中文查询会先经同义词表展开为英文 OR 组
(队列 → queue, queues, job queue, enqueue, broker…),展开明细打在输出头部,
便于判断命中是否符合预期。
组合技巧:--cat 与 --stack 可以叠加,用来回答「Laravel 生态里哪些
是通用组件而不是框架包」这类问题:
python3 scripts/find_php.py --stack laravel --cat component --min-stars 3000
四、怎么用这套资料最有效
4.1 按「问题」而不是按「清单」查
不要从第一册读到最后。先明确你此刻要解决什么,再跳到对应分册。
分册里的正文不是仓库简介的复述,而是取舍判断——为什么选 A 不选 B,
什么情况下这个方案会失效。
4.2 三个必须自己确认的点
本技能的星数是采集时快照,分类是自动判定加人工校准的结果。动手前请核对:
- 是否还在维护。看
archived标记,也看updated字段距今多久。
星数高但两年没提交的库,不要用在新项目里。 - 版本兼容性。
composer.json里的 PHP 版本约束和框架版本约束,
比星数重要得多。 - 许可证。MIT / Apache-2.0 一般无碍;GPL 系、source-available
(如invoiceninja/invoiceninja)在商业分发前务必读 LICENSE。
4.3 数据会过期,命令能刷新
python3 scripts/find_php.py --refresh-stars 50 # 刷前 50 个,验证连通性
python3 scripts/find_php.py --refresh-stars # 全量,约 900 次 API 调用
刷新需要已登录的 gh CLI(未认证限速 60 次/小时,全量刷不完)。
刷新会就地更新 references/repos.json 并重排 rank。
五、分册内容说明
| 分册 | 核心内容 | 篇幅 |
|---|---|---|
00-index.md |
地图:三维度说明、分类统计、检索指南 | 112 行 |
10-learning.md |
四层学习路线(语言→OOP→工程→内核)、源码阅读顺序、常见弯路 | 156 行 |
20-interview.md |
面经清单、PHP 算法实现、4 个高频问题的答题骨架 | 75 行 |
30-awesome.md |
权威清单用法、清单外的导航、星数认知偏差 | 51 行 |
40-frameworks.md |
8 个框架定位对比、Laravel 生态、Symfony 组件、选包准则 | 150 行 |
50-components.md |
按功能域分 9 节(HTTP/日志/文件/日期/容器/数据层/队列/工具) | 232 行 |
60-projects.md |
后台基座、电商建站、协作工具、练手项目、二开注意事项 | 126 行 |
70-quality-security.md |
静态分析分级策略、测试策略、十条安全硬规则、CI 门禁 | 148 行 |
80-performance-devops.md |
四条常驻内存路线对比、优化优先级、性能陷阱、上线清单 | 140 行 |
六、边界与不做的事
- 不含代码生成。这是导航技能,不是代码助手。要写代码请直接描述需求。
- 不替你做选型决策。分册给的是判断依据和取舍代价,最终取决于你的团队
能力、交付周期和维护预期。 - 不覆盖私有/商业组件。只收公开 GitHub 仓库。
- 星数不等于质量。本技能用
core标记和人工校准来对冲这一点,
但仍建议结合updated、issue 响应速度、依赖广度综合判断。
七、数据来源与合规
- 数据来源:GitHub 官方 REST API(
/search/repositories、/repos/{owner}/{repo}) - 采集日期:2026-10-30
- 所有仓库链接指向
github.com官方域名,不含任何第三方镜像或加速代理 - 各仓库版权归原作者所有,许可证信息已逐条记录在
references/repos.json
的license字段