1

PHPスクリプトの1つに、バージョン5.3に依存して実行する関数があります。

PHP 5.2以前のサーバーで実行したときにたまたま呼び出されなかった関数内にある場合は、無視されるだけだと思いました。ただし、そのスクリプトとその中のクラスが含まれると、PHPがベイルして実行を停止することがわかります。

それを避けることができれば、異なるPHPバージョン専用の異なるバージョンのスクリプトを分岐する必要はありません。代わりに、「PHPバージョン5.3の場合はこれを実行し、それ以下の場合は別のことを実行する」というコードを作成できることが理想的です。

PHPマニュアルである種の「バージョンスイッチ」を探しましたが、見つかりませんでした。

私が説明しているようなスイッチ機能は可能ですか?

4

4 に答える 4

3

これを解決する方法はたくさんあります。バージョンを検出して関数を実行することを好みます。

  1. 現在のphpバージョンを提供する、phpversion()または定数と呼ばれる関数がありますPHP_VERSION

    それらを次のように使用します

    if(phpversion() == '5.3') {
      //specific php functions
    }
    
  2. 現在のバージョンが新しいかどうかを確認するには、「5.3.2」と言います。単に使用します:

    if (strnatcmp(phpversion(),'5.3.2') >= 0) {
        # equal or newer
    }
    else {
       # not 
    }
    
  3. または、version_compareを使用して確認します

    if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
        echo 'I am at least PHP version 5.3.0, my version: ' . PHP_VERSION . "\n";
    }
    

または、これまで以上にユーザーフレンドリーなバージョンを使用することですfunction_exists()

if (!function_exists('function_name')) {
    // the PHP version is not sufficient
}
于 2012-04-28T04:36:57.293 に答える
1

PHP 5.3 以降のコードを含む別のコード ファイルを用意し、include()5.3 以降を検出した場合にのみそれを使用します。

于 2012-04-28T04:32:23.843 に答える
0

PHP の定義済み定数を見てください。これらには、実行中のバージョンを定義するいくつかの定数が含まれています。これを使用して、ロードするスクリプトのバージョンを決定できます。

于 2012-04-28T04:33:06.587 に答える
0

存在しない場合は、PHP 5.3+ 関数の実装を検討することもできます。

if (!function_exists('array_replace')) {
    function array_replace(....) {
        // logic here
    }
}

バージョンを検出する必要がある場合は、を使用できますPHP_VERSION

于 2012-04-28T04:40:20.997 に答える