2012-04-28 8 views
1

バージョン5.3に依存している私のPHPスクリプトの1つに機能があります。PHPをバージョンに基づいて切り替えることはできますか?

PHP 5.2以前のバージョンのサーバーで実行されたときに呼び出されなかった関数にあれば、無視されると考えました。しかし、そのスクリプトとそれに含まれるクラスが含まれていても、PHPが実行を停止して実行を停止することが判明しました。

私がそれを避けることができれば、別のPHPバージョン専用の異なるバージョンのスクリプトをブランチする必要はありません。代わりに、 "PHPバージョン5.3の場合はこれを行い、そうでない場合は別のことをしてください"というコードを持つことが理想的です。

私は、PHPマニュアルで何らかの「バージョン切り替え」を探しましたが、表示されませんでした。

私は説明しているようなスイッチ機能はありますか?

答えて

3

これを解決する方法はたくさんあります。私はバージョンの検出と機能の実行を好む。

  1. 関数は、現在のバージョンができますする新しいまたは等しいかどうかを確認するには

    if(phpversion() == '5.3') { 
        //specific php functions 
    } 
    
  2. のようにそれらを使用していますので、ご使用のPHPバージョン

    を与えるphpversion()または定数PHP_VERSIONと呼ばれるがあります「5.3.2」と言う。単に使用:

    if (strnatcmp(phpversion(),'5.3.2') >= 0) { 
        # equal or newer 
    } 
    else { 
        # not 
    } 
    
  3. あるいは、

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

あるいは、これまで以上にユーザーフレンドリーバージョンを知ってversion_compareを使用するには、あなたがPHPを実行するに見えるかもしれませんfunction_exists()

if (!function_exists('function_name')) { 
    // the PHP version is not sufficient 
} 
+0

['version_compare'](http://us.php.net/manual/en/function.version-compare.php)はどうですか? – DCoder

+0

@DCoder、忘れてしまった..更新;) – Starx

+1

PHP 5.2.7以降にも 'PHP_VERSION_ID'があります。これは簡単な比較のために' PHP_VERSION'より使いやすいものです。例えば。 'if(PHP_VERSION_ID> = 50300)'です。リファレンス:http://php.net/phpversion#example-536 – MrWhite

1

5.3以降のコードを検出すると、PHP 5.3+コードとは別のコードファイルがあり、include()しかありません。

+0

応答いただきありがとうございますが、私は具体的には私のスクリプトの異なるバージョンのブランチではなく、むしろ私が質問しています。私はすでに別のコードファイルを作ることができることを既に知っていますが、私が得ることができればコード内の解決策を探しています。 – Questioner

0

PHP predefined constantsをご覧ください。実行バージョンを定義するいくつかの定数が含まれています。それを使って、読み込むスクリプトのバージョンを決めることができます。

0

を使用することです彼らが存在しなければ5.3+の機能。

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

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

関連する問題