Help us understand the problem. What is going on with this article?

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

More than 3 years have 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 '以下';
}

参考記事

materializing
Cakeをもぐもぐ。。。 https://github.com/materializing
http://www.materializing.net/
e-catchup
国産オープンソース baserCMS を世に送り出したWeb技術のプロフェッショナル集団です。
https://catchup.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away