Composer怎么安装Medoo数据库框架 轻量级DB操作库教程【实操】

10次阅读

Medoo 已停止维护,composer require medoo/medoo 默认安装的 v2.3.4 不兼容 php 8.2+ 和 mysql 8.0.31+,存在动态属性报错、认证插件不支持等问题,推荐改用 spiral/database 或 doctrine/dbal。

Composer怎么安装Medoo数据库框架 轻量级DB操作库教程【实操】

Medoo 不再维护,Composer 安装会失败或拉取到废弃版本 —— 直接用 composer require medoo/medoo 会安装 v2.3.4(2022 年最后更新),但该版本已不兼容 PHP 8.2+,且无安全更新。

为什么 composer require medoo/medoo 现在不推荐

Medoo 官方仓库早在 2022 年归档(Archived),medoo/medoo 包未标记为废弃,但 Composer 仍能拉取旧版。问题包括:

  • PHP 8.2+ 报 Deprecated: Creation of dynamic Property 错误(因使用动态属性未声明)
  • MySQL 8.0.31+ 的默认认证插件(caching_sha2_password)不被 v2.3.4 原生支持
  • 无 PSR-14 事件、无连接池、无 prepared statement 自动绑定参数类型推导
  • gitHub Issues 全部关闭,无法提交 bug 或 PR

替代方案:用更活跃的轻量级库(推荐 spiral/databasedoctrine/dbal

如果坚持要「Medoo 风格」(链式查询、单文件易理解、无 ORM 负担),可用以下两个仍在维护的替代品:

  • spiral/database:现代、支持协程、DSL 接近 Medoo,但需搭配 spiral/prototype 或手动配 pdo —— 安装命令:composer require spiral/database
  • doctrine/dbal:稳定、文档全、兼容性极好,虽稍重但提供 QueryBuilder,写法比原生 PDO 更简洁 —— 安装命令:composer require doctrine/dbal
  • 若项目极小(如单页工具脚本),可直接用 PDO + 封装 20 行函数,比引入废弃库更可控

真要装 Medoo?必须加版本锁并补丁

仅限遗留项目兼容或学习目的。执行以下操作才可能跑通:

  • 指定兼容 PHP 8.1 的最后一个可用 tag:composer require medoo/medoo:^2.2(避开 2.3.x 的动态属性问题)
  • composer.json 中添加平台配置,锁定 PHP 版本:"config": {"platform": {"php": "8.1.28"}}
  • 手动 patch Medoo.php:在类开头加 public $database_type; 等属性声明,否则 PHP 8.2+ 直接 Fatal Error
  • 连接时显式指定 PDO 选项:'option' => [PDO::ATTR_EMULATE_PREPARES => true],绕过 MySQL 8 认证插件问题

Medoo 的核心价值是「够简单」,但现在它的「简单」已变成「隐性维护成本」——尤其当错误只在升级 PHP 或换 MySQL 版本后才暴露时,排查路径远比换一个活跃库更长。

text=ZqhQzanResources