balgf/PHPThis

GitHub: balgf/PHPThis

PHPThis 是一个专为 AI 优先编写工作流设计的实验性轻量级 PHP Web 框架,通过严格的检查规则和最小化抽象让 AI 生成的代码更安全、可验证且人类可问责。

Stars: 0 | Forks: 0

# PHPThis PHPThis 是一个实验性的、经过检查的 PHP profile 和轻量级 Web 框架,专为**AI 优先编写与人类问责制**而设计。AI 是主要的代码编写者和知识接口。人类提供意图,决定重要的权衡,并对最终产生的软件负责。 它贴近普通的 PHP,并且相比为打字速度而优化的 API,它更青睐那些具有局部性、字面意义、有类型、有边界且易于验证的代码。 PHPThis 不提供 AI 或 LLM API。此处的“AI”指的是代码编写工作流。 其工作规则很简单:如果某种行为无法通过遵循普通的 PHP 定义来找到,那它就不属于这个框架。 ## 询问项目 AI PHPThis 没有传统的框架手册。要学习如何编写代码、解释现有路径或修复诊断信息,请询问在应用中工作的 AI。它的首要任务是检查已安装的 PHPThis 版本、应用程序的 `AGENTS.md` 和 `.ai/` 上下文,以及具体的源码和测试。 有用的请求包括: - `解释此应用程序如何处理请求。请引用已安装的 PHPThis 文件和本项目的连接配置。` - `使用此应用程序标准的 PHPThis 模式添加一个有边界的数据库读取操作,并证明其查询次数保持恒定。` - `解释 PHT005,展示本项目在何处违反了它,并修复原因。` - `PHPThis 目前支持 middleware 吗?检查已安装的版本,并区分现有行为与提案。` 本仓库中带有版本的 Markdown 并非线性教程。它是紧凑的框架权威资料,可供 AI 路由并由人类审计。人类批准的意图和决策定义了期望的应用程序行为;源码、测试和完整的检查则提供了已实现内容的有效证据。 ## 与众不同之处 - 没有 ORM、Active Record、延迟加载、query builder、facades、全局 helper、autowiring、路由发现或运行时 macro。 - SQL 保持可见且针对特定引擎,位于轻量级的 PDO 传输边界之后;本地使用 SQLite 执行基础连接契约,并配置了专用的 CI 来针对 SQLite、MySQL 和 PostgreSQL 认证相同的契约。 - Strict Profile 版本 2 将数据保留在唯一命名的参数中,并将直接通过 `Connection` 执行的 SQL 限制为有限的、非空的编译时常量语句;应用程序拥有的结构选择映射到经过审查的语句,而不是依赖于 sanitizer 或 query builder。 - 每个数据库连接都有一个明确的查询预算,会在执行过量语句之前失败。 - 每个数据库连接都有一个有边界的查询追踪,可报告重复的 SQL 指纹、执行时间和失败情况,而不会保留 SQL 或参数。 - 外部数据库和 JSON 值在进入有类型的代码之前,会被解析一次,成为具体的 final readonly projections 和 commands。 - 带有版本的 Strict Profile 会通过稳定的、面向修复的 `PHT` 诊断信息,拒绝合法但不安全的 PHP 代码。 - 使用该框架的应用程序会运行一个已安装的 `phpthis check` 二进制文件,其最高级别的 PHPStan 配置无法被项目文件削弱。 - 已安装的知识图谱会将框架问题路由到相关的契约、决策、源码和测试,而不是依赖模型记忆。 - Handler 实现一个可见的 `handle` 方法,并通过普通的构造函数接收依赖项。 - 路由是显式的方法、路径和已构造好的 handler 对象,它们由命名的 route-area 列表组合成一个可见的清单。 - 可选的、功能优先的 [CRUD 参考 profile](docs/crud.md) 为 AI 编写的 Create 和 List 工作提供了一个隔离的默认选项,既不添加通用的 CRUD 运行时,也不强制要求应用程序目录。 - 单一的请求边界会对有边界的 PHP 运行时输入进行标准化,并且仅映射明确注册的异常类。 - 可选的 session 状态使用单一的原生 PHP 惰性生命周期,具有有边界的标量快照、显式的安全响应 cookie、短暂的锁定时间,并且没有 session helper 或请求上的 session 字段。 - 缓存从显式的应用程序策略开始,而不是框架 helper:HTTP 响应缓存和服务器端数据缓存是独立的关注点,PHPThis 目前不提供通用的缓存运行时。 - Markdown 是框架接口的一部分。防护命令要求 Markdown 文件的数量多于 PHP 文件。 - 在对已接受的 cookie 和原生 session 决策进行安全和并发审查后,第一阶段的代码核心被有意限制在 1,700 条物理行以内;该余地并未授权添加其他机制。 移除 ORM 并**不能**证明 N+1 查询是不可能发生的。PHPThis 将可见的 SQL 与查询预算和规模敏感的测试结合在一起,从而使查询次数不会随着结果集大小而无意识地增长。 有限的 SQL 和参数绑定并不能证明已实现授权或最小权限。使用该框架的应用程序需要记录并验证每个运行时连接可用的对象和操作,并将 schema-owner、迁移和管理凭据保留在 Web 运行时之外。 ## 当前状态 **状态:实验性 pre-alpha 阶段。** 框架 API 可能会在没有向后兼容性的情况下发生更改,直到开发模式得到验证为止。请勿在生产环境中使用 PHPThis。 这是一个零第三方运行时依赖的基础。目前的验证切片支持有边界的运行时请求接收、不可变的 header 和经过验证的响应 cookie、可选的原生文件惰性 session、精确的错误映射、精确路径的路由、显式的 handler 以及经过检测的 PDO 访问。它不包括缓存客户端、缓存接口、缓存 helper 或自动 HTTP 缓存策略。其示例应用程序包含一个有边界的 `GET /users` List 操作和一个事务性的 `POST /users` Create 操作。Get、Update 和 Delete 尚未声明;item 操作正在等待有类型的路径参数和应用程序拥有的策略决策。Session 传输不是身份验证、授权、过期或 CSRF 的实现;应用程序需自行管理这些策略。 可执行的查询缩放验证在测试固件从 2 个用户增长到 50 个用户的过程中,将已接受的读取操作保持在一个语句。一个独立的 N+1 负面对照组在从 3 个语句增长到 51 个语句的同时产生了相同的 JSON 响应体;`PHT003` 拒绝了这种实现,而查询预算在第 4 条语句执行前阻止了它。 ``` PHP runtime -> RequestBoundary -> optional lazy SessionLifecycle -> Application -> Router -> Handler -> Response ``` ## 试用 要执行完整的开发检查,需要 PHP 8.4 以及 PDO、PDO SQLite、ext-session 和 Composer。PHPStan 和 PHPThis Strict Profile 是强制性的开发组件,不会影响框架运行时。 ``` git clone https://github.com/balgf/PHPThis.git cd PHPThis composer install composer check composer example:setup php -S 127.0.0.1:8080 -t example/public curl -i http://127.0.0.1:8080/health curl -i http://127.0.0.1:8080/users curl -i -X POST http://127.0.0.1:8080/users \ -H 'Content-Type: application/json' \ --data '{"name":"Katherine Johnson","email":"katherine@example.com"}' ``` ## 启动应用程序 独立检查的 `phpthis/skeleton` 包源码现在位于 `skeleton/` 目录下。它包含一个可运行的健康检查应用程序、项目专有的 AI 上下文、已安装的 profile 门控、行为测试和 CI。独立的 Composer 包将随第一个 alpha 版本发布;在此之前,[入门指南](docs/getting-started.md) 描述了源码评估,并没有假装 `composer create-project` 已经可用。 每个应用程序都必须拥有并提交一个轻量级的根目录 `AGENTS.md` 和一个任务路由的 `.ai/` 目录。这些文件记录了项目特定的领域、规模、集成、操作和验证事实,而无需复制 PHPThis 的维护者说明。 请项目 AI 遵循[应用程序引导契约](docs/getting-started.md)、已安装的[消费者契约](docs/consumer-contract.md)以及[知识图谱](docs/knowledge-map.md)。现有的应用程序如果是有意为之,仍然可以采用 `templates/application/` 下仅包含文档的上下文。 ## 权威与项目状态 - [愿景](VISION.md) 定义了带有人类问责制的 AI 优先编写模式。 - [消费者契约](docs/consumer-contract.md) 是可移植的应用程序最低有效性标准。 - [知识图谱](docs/knowledge-map.md) 将 AI 引导至最小且相关的已安装权威源。 - [CRUD 参考 profile](docs/crud.md) 定义了可选的、功能优先的应用程序结构及其当前的证据边界。 - [安全基线](docs/security.md) 定义了 SQL 数据/结构分离、最小权限义务以及自动证明的局限性。 - [Session 状态](docs/sessions.md) 定义了可选的原生生命周期、显式的 cookie 契约、部署要求以及应用程序策略边界。 - [缓存策略](docs/caching.md) 将 HTTP 响应缓存与应用程序数据缓存分离开来,并定义了在采用其中任何一种之前所需的证据。 - [架构决策](docs/decisions/README.md) 保留了已接受的理由和重新考虑的触发因素。 - [评估](docs/evaluation.md) 定义了证据和未来的 AI 对比工作。 - [路线图](ROADMAP.md)、[贡献门控](CONTRIBUTING.md)和[安全策略](SECURITY.md)传达了 pre-alpha 项目当前的边界。 维护者的 [AI 上下文索引](.ai/README.md)负责将对 PHPThis 本身的更改进行路由。它不会被复制到应用程序中。 ## 许可证 PHPThis 是开源软件,基于 [MIT 许可证](LICENSE) 授权。
标签:AI辅助编程, OpenVAS, PHP, Web框架, 后端开发, 极简框架, 测试用例, 静态检查