2011-02-01 10 views
0

私はWordpressプラグインを作成していますので、異なるユーザーと異なるPHPバージョンで使用されます。問題は、json_encodeのような関数の一部がPHP 5.3以降で使用可能であり、PHP 5.2以降では使用できないことが判明したことです。ほとんどのユーザーは最新のバージョンを持っていないため、大きな問題が発生します。異なるバージョンのPHPを扱う方法

は、私は99%が行ってプラグインを取得した後、アプリのいくつかの種類を、次の

  1. テスト私のコードを実行するために、今すぐ欲しいです。私は最小限のPHPバージョンを置くことができます。そのアプリ。 json_encodeのような関数を見つけることができます。それが可能かどうかは確信していませんが、おそらく私の問題のほとんどを解決するでしょう。
  2. PHPでPHP関数のネイティブコードを取得することは可能ですか?私は彼らがPHPで書かれているかどうか、私はそれらを得ることができるかどうかわからない。そうでない場合は、これらの機能の置き換えを見つけるための最良の選択肢は何ですか。確かに、私は最初からそれらを再コーディングしたくないです。
  3. 機能を実装する最も良い方法は何ですか?関数が存在するかどうかをチェックする人もいますが、PHPバージョンをチェックする開発者がいくつか見つかりました。どちらが最善で、なぜですか?

また、展開戦略とその特定の問題の処理方法についても読んでください。

+1

'function_exists()は'あなたの友達ですhttp://php.net/manual/en/function.function-exists.php –

答えて

0

Re 1.)このようなアプリケーションがあるかもしれませんが、そうでないかもしれません。あなたが通常やりたいことは、マニュアルで使用する各関数を詳しく調べることです。これには、PHPのバージョンが必要です。

Re 2)関数がPHP 5.3または5.2のみの場合は、通常、ユーザー寄与メモまたはスタックオーバーフローで置換候補が見つかります。 (ただし、UCNの多くのコードはが悪いですが、この場合は少なくとも1つのコメントがあります)。

Re。 3)おそらく問題ではないが、機能が存在するかどうかを確認することは確かに最も安全な方法である。

2

2.nope。 json_encode(BTWは5.3ではなく5.2から利用可能です)の場合は、代替としてを使用することができます。

3.機能が存在するかどうかをチェックすることは、100%確かに。結局のところ、利用可能なすべてのコア関数ではなく、PHPの自己コンパイル版を実行することができます。名前空間、例外連鎖などの機能が利用可能かどうかを知るために、PHPのバージョン番号を確認してください。

+0

5.2バージョンのみを受け入れるので、ええ、それは5.2以降で利用可能だが、それはさらに悪いです1パラメータ、5.3バージョンは2つのパラメータを受け入れます。 function_existがここで助けにならないので、どのようにパラメータの存在をチェックするのか? –

+1

あなたはそれをそうしようとする悪質なサークルで実行されます。あなたがサポートする最も低いバージョンのPHPを選んで、プラグインが動作するようにコードを書いてください。 – Mchl

2

あなたが最小バージョンと を実行するためにコードの一部のために必要な拡張を見つけるためにPHPと

  • PHP_CompatInfoの古いバージョンのために不足している機能を提供するためにPEARの

    • PHP_Compatを使用することができます

      関数やクラスの独自のユーザーランド実装を提供したい場合は、function_existsまたはclass_existsブロックにラップされたものを提供することをお勧めします。だから、それらのメソッドを提供するPHPバージョンに干渉しません。

  • +0

    PHP_Compat関数のほとんどはPHP 4-5から提供されていますが、これはあまり役に立ちません。私はドキュメントをチェックして、json_encode関数が存在しません。 –

    +0

    @Omar not true:http://pear.php.net/package/PHP_Compat/docs/1.6.0a3/PHP_Compat/_PHP_Compat-1.6.0a3---Compat---Function---json_encode.php.html – Gordon

    +0

    そのページが更新されていない可能性がありますか?おそらく、@ pear.php.net/manual/en/package.php.php-compat.components.php –

    1

    Wordpressのプラグインの仕組みが分かりませんが、古いPHPバージョンで実行できるようにしたい場合を除いて、利用可能な機能を確認して、コードを導く代替手段を提供する必要があります厄介である。

    あなたのユーザーを教育したい場合は、version_compare()機能を使用して、よくテストされ完全に機能しているPHPバージョンとバージョンを比較し、教育的で説明的なメッセージをエンドユーザーに送信することができます。

    if (version_compare(PHP_VERSION, '5.3.0') <= 0) { 
        echo 'You need to run PHP 5.3.0 to use this plugin'; 
    } 
    
    関連する問題