0

私は Wordpress プラグインを作成しているので、さまざまなユーザーやさまざまな PHP バージョンで使用されます。問題は、一部の関数 (json_encode など) が PHP 5.3 で使用でき、PHP 5.2 以下では使用できないことがわかったことです。ほとんどのユーザーは最新バージョンを持っていないため、これは大きな問題を引き起こします。

プラグインを99%完成させた後、次のことをしたい

  1. ある種のアプリでコードをテストします。ここに最小 PHP バージョンを配置できます。そのアプリ。またはプログラムは json_encode のような関数を見つけます。それが可能かどうかはわかりませんが、おそらく私の問題のほとんどを解決するでしょう。
  2. PHP で PHP 関数のネイティブ コードを取得することは可能ですか。それらが PHP で書かれているかどうかはわかりません。もしそうなら、どこで入手できますか。そうでない場合、これらの関数の代替を見つけるための最良のオプションは何ですか? 確かに、ゼロから再コーディングしたくありません。
  3. 関数を実装するための最良の方法は何ですか。PHP のバージョンをチェックする開発者もいれば、関数が存在するかどうかをチェックする開発者もいます。どちらが最適で、その理由は?

また、展開戦略とその特定の問題にどのように対処したかについてもお読みください.

4

4 に答える 4

2

PEAR を使用できます

  • PHP_Compat古いバージョンの PHP に不足している機能を提供し、
  • PHP_CompatInfoコードの一部を実行するために必要な最小バージョンと拡張機能を見つける

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

于 2011-02-01T10:45:55.143 に答える
2

2.いいえ。これらは、C で記述されたコンパイル済みの拡張機能によって提供されます。json_encode (これは 5.3 ではなく 5.2 以降で利用可能です) の場合、代わりにZend_Jsonを使用できます。

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

于 2011-02-01T10:45:02.543 に答える
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';
}
于 2011-02-01T10:51:58.407 に答える
0

Re 1.) そのようなアプリケーションがあるかもしれませんが、ないかもしれません。通常は、必要な PHP バージョンが記載されているマニュアルで使用する各関数のタブを閉じておくことをお勧めします。

Re 2.) 関数が PHP 5.3 または 5.2 のみの場合、通常、ユーザー投稿ノートまたはスタック オーバーフローで代替の提案を見つけることができます。(ただし、何を使用するかに注意してください。UCN のコードの多くは不適切です。ただし、その場合、通常、少なくとも 1 つのコメントでそのように記述されています。)

再。3.) おそらく問題にはなりませんが、関数が存在するかどうかを確認するのが最も安全な方法です。

于 2011-02-01T10:45:22.063 に答える