プラグイン作ってるときに、baserCMSコアのバージョンによっては利用できない処理となってしまったときに、どうしたものか考えてみた。
その結果、version_compare() 見つけて、これ使えば良さそうっぽいとやってみた。
想定している対象者
- baserCMSでウェブサイトを制作をしている方
- PHPer
発生状況
- baserCMS3.0.10 では動くけど、3.0.9 では動かない処理を作ったとき
- バージョン番号での比較できる処理を探して旅に出たとき
サンプル
<?php if (version_compare($siteConfig['version'], '3.0.10') >= 0): ?>
3.0.10以上だからOK
<?php else: ?>
3.0.9以下だからNG
<?php endif ?>
if(version_compare($siteConfig['version'], '3.0.10', '>=')) {
echo '3.0.10以上だからOK';
} else {
echo '3.0.9以下だからNG';
}
version_compare() について
ふたつのバージョン番号文字列を比較できる関数。
version_compare(string $version1, string $version2[, string $operator])
version_compare() の返り値は、最初のバージョンが2番目のバージョンより
小さい場合に -1
同じ場合に 0
2番目のバージョンのほうが小さい場合に 1
となる。
特殊なケースで比較
状況としてはあんましないけど、以下みたいに特殊な場合でもOKでした。
if (version_compare('3.0.6-hash', '4.0.0', '>=')) {
echo '以上';
} else {
echo '以下';
}
if (version_compare('4.1.0-dev', '4.0.1', '>=')) {
echo '以上';
} else {
echo '以下';
}