baserCMS

[baserCMS]バージョン番号を比較して動作を分ける

More than 1 year has passed since last update.

プラグイン作ってるときに、baserCMSコアのバージョンによっては利用できない処理となってしまったときに、どうしたものか考えてみた。

その結果、version_compare() 見つけて、これ使えば良さそうっぽいとやってみた。


想定している対象者


  • baserCMSでウェブサイトを制作をしている方

  • PHPer


発生状況


  1. baserCMS3.0.10 では動くけど、3.0.9 では動かない処理を作ったとき

  2. バージョン番号での比較できる処理を探して旅に出たとき


サンプル

<?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 '以下';
}


参考記事