用 PHP 8.5 从零构建零依赖 Web 框架:路由与容器
零依赖不是目的,可控才是。当框架的每一行代码你都能读懂,线上排障就不再是“玄学”。 为什么选择零依赖 Composer 生态很繁荣,但也带来三个现实问题: 问题 表现 零依赖的收益 --- --- --- 依赖膨胀 一个博客装进 40+ 个包 部署包只有几百 KB 版本地狱 升级…
共 6 篇文章。
零依赖不是目的,可控才是。当框架的每一行代码你都能读懂,线上排障就不再是“玄学”。 为什么选择零依赖 Composer 生态很繁荣,但也带来三个现实问题: 问题 表现 零依赖的收益 --- --- --- 依赖膨胀 一个博客装进 40+ 个包 部署包只有几百 KB 版本地狱 升级…
个人博客、内部工具、边缘站点,SQLite 往往比 MySQL 更合适。前提是你要知道它的边界。 什么时候选 SQLite 单实例部署、读多写少 数据量在百万行以内 希望零运维、备份就是一个文件 必须开的三个开关 WAL 让读写不互相阻塞,是性能的关键。 索引只建在这三类字段上…
内容站的 XSS 几乎都从 Markdown 渲染进来。自研渲染器要处理的不只是转义,还有链接协议、图片事件、原始 HTML 与属性注入——四个坑与对应写法。
自研框架稳定到 1.0:路由/容器/ORM/模板/后台 RBAC 全部就位,PHP 8.2+ 零第三方依赖,自带 120 个用例、1528 条断言与一条命令的代码检查。
属性钩子(Property Hooks)让"取值/赋值时做点事"不再依赖魔术方法或 setter 样板。这篇讲它解决什么问题、与 __get/__set 的区别,以及只读类与 clone 的配合。
不少主机只装了 GD,没有 Imagick。这套管线用 GD 完成方向校正、等比缩放、WebP 输出与体积保护,顺带解决"上传 10MB 原图直接当缩略图用"的加载灾难。
把场景说清楚,我按做过的项目给判断——不合适也会直说。
Enter 发送 · Shift + Enter 换行。信息只用于与你联系,不做其它用途; 不习惯对话也可以直接用下面的表单。
描述一下需求与期望,我会在 1 个工作日内回复;也可以直接通过页面上的联系方式找到我。