创建条件作曲家要求

Roh*_*hit 3 php composer-php

我已经创建了我的第一个 Composer 包,它具有 MySQL 和 MongoDB 的功能,但是,它不需要两者兼而有之。我意识到有人可能只想将该包与两个数据库之一一起使用,目前我有:

"require": {
    "mongodb/mongodb": "^1.2",
}
Run Code Online (Sandbox Code Playgroud)

我想弄清楚,有没有办法使包成为可选的,如果存在,可以自动加载某些文件?或者我最好在代码中做一些事情,例如:

if (class_exists('PDO')) {
    // Load MySQL code
}
if (class_exists('MongoClient')) {
    // Load MongoDB code
}
Run Code Online (Sandbox Code Playgroud)

还有其他我想不到的解决方案吗?

bis*_*hop 5

“可选”包将自身表现为“建议” composer.json

"suggest": {
    "mongodb/mongodb":"Required to use this package with Mongo DB",
    "ext-pdo": "Required to use this package with MySQL",
    "ext-pdo_mysql": "Required to use this package with MySQL"
}
Run Code Online (Sandbox Code Playgroud)

由于这些是可选的,仅仅是建议,因此您的代码需要注意将可选路径包装在适当的条件中。这可能是对 PDO 类的测试、对所需类型的连接对象的测试等。