Joomlaのバージョン間で異なるメソッドシグネチャの「厳格な標準」警告を解決する方法


7

Joomla 3.xをサポートするように拡張機能を更新する際に、関数のシグネチャが2.5以降に変更され、Strict standards警告が表示されるいくつかのケースに遭遇しました。

たとえば、JTableクラスで_getAssetParentId()は、

protected function _getAssetParentId($table = null, $id = null)
{
    ...
}

Joomla 3.xでこれを行うには:

protected function _getAssetParentId(JTable $table = null, $id = null)
{
    ...
}

それは小さな違いですが、警告をスローするのに十分です。

単一のクラスファイルを使用してJoomla 2.5および3.0をサポートする他の拡張機能を見ると、問題を無視しているように見えます。

明らかに、3.xの警告を修正すると、2.5がインストールされ、警告がスローされます…

私たちの選択肢ではない「ソリューション」には、次のものがあります。

  • 2つの個別のバージョン固有のクラスファイルを使用する
  • 警告をオフにする

この競合をどのように解決しますか?

回答:


9

職場では、PHPのすべての警告、エラー、厳格な標準違反の解決に努めています。シグネチャが異なるこのような状況では、2つの個別のバージョン固有のクラスファイルを使用して他の方法で解決することはできません。なぜそれがあなたにとって選択肢ではないのか私は興味がありますか?

バージョン固有のクラスファイルは実際には実装が簡単ですが、複数の場所で一部のコードを更新するため、保守が少し難しくなります。この状況で行う最良の方法であるIMOは、src/オートローディング用のすべてのコンポーネントクラスを保持するルートフォルダーを用意し、次にoverrides/$VERSIONフォルダーに2.5または3.xバージョン固有のクラスを含めることです。次に、オートローダーをセットアップして、現在のバージョンに基づいて、適切な場所で適切な順序で調べることができます。

私は本当にもっと簡単な方法があったらいいのにと思っていますが、PHPでは、シグネチャを一致させることができる動的メソッドのオーバーロードを許可していません。


公開している拡張機能については問題ありません。最新のJoomlaバージョンに修正し、古いバージョンで警告を処理します。ただし、問題の拡張機能は、サードパーティの拡張機能が警告なしで厳密に実行できる必要があるという非常に高い「セキュリティ」要件を持つ一部のお客様向けです。今後、2つのバージョンがあるようです。
クレイグ

4

私の知る限り、この厳格な警告を解決することはできません。これは、署名が2.5または3.xで常に異なるためです。

3.xで修正して2.5で無視するか、その逆です。

生産的な環境では、開発設定で厳密な警告のみを表示する必要があるため、この警告は決して表示しないでください。


ええ、これは私たちの考えでした。今後2つのバージョンができるようです。
クレイグ

1

PHPの状態には大きな問題があり、一部のサーバーは5.2を使用していますが、他のサーバーは5.3または5.4で安全を維持しています。5.5で最新の状態を保つものもあります。

これは、「何をサポートするか」に大きな問題を引き起こします。さまざまなバージョンの市場を見ると、5.2が最も広く使用されていますが、安全ではありません。5.3と5.4はJoomlaが3で探すものですが、ユーザーが5.5の場合、厳密な標準警告は他のバージョンと異なる場合があります。

PHPはエラーでトップを超えることはありませんが、PHPはまだ「機能」しているため、その実行方法は現在のバージョンが処理することを意図した方法ではないという警告が引き続き機能します。したがって、ほとんどの開発者にとって、NoticeとStrict Standardsの警告はほとんど無視できます。1つを修正すると、別のバージョンのPHPで別のトリガーをトリガーする可能性があるためです。

それらをすべて削除することは、OCD開発者に最適です。明らかなエラーは修正する必要がありますが、あなたが説明したようなエラーは、Joomlaを1つのPHPバージョンに集中させ、そのPHPバージョンをアップグレードするための多くの作業につながります。

これに対する唯一の真の修正は、Joomlaの「ブートストラップ」でPHPのバージョンをテストし、それに基づいてファイルをロードすることです。これにより、Joomlaの基本インストールサイズが2倍になる可能性があります。実際にはどのサイトも壊さないでください。ドンギルバートの答えは、これについてもう少し詳しく説明しています。

私の答えはちょっと変わっていますが、PHPの全体的な混乱を他の人が理解するのに役立つと思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.