我已经创建了我的第一个编写器包,它具有MySQL和MongoDB的功能,但是,它不需要两者。我意识到有人可能只想用两个数据库中的一个来使用这个包,目前我有:
"require": {
"mongodb/mongodb": "^1.2",
}
我想弄清楚,有没有办法让软件包可选,如果存在,自动加载某些文件?或者我最好在我的代码中做一些事情,比如:
if (class_exists('PDO')) {
// Load MySQL code
}
if (class_exists('MongoClient')) {
// Load MongoDB code
}
还有其他我无法想到的解决方案吗?
答案 0 :(得分:3)
"可选"包裹表现为"建议"在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"
}
由于这些是可选的,仅仅是建议,因此您的代码需要注意在适当的条件中包装可选路径。这可能是对PDO类的测试,对所需类型的连接对象的测试等等。