23

PHP Basic Coding Standards PSR1 について質問があります。PSR 1 ルール 2.3 には次のように記載されています。

ルール 2.3 副作用

ファイルは、新しいシンボル (クラス、関数、定数
など) を宣言し、他の副作用を引き起こさないようにする必要があります。または、
副作用のあるロジックを実行する必要がありますが、両方を行うべきではありません。

「副作用」という用語は、ファイルをインクルードするだけで
、クラス、関数、定数などの宣言に直接関係しないロジックの実行を意味します。

「副作用」には、出力の生成、
「require」または「include」の明示的な使用、外部サービスへの接続、ini
設定の変更、エラーまたは例外の発行、グローバル変数または静的変数の変更、
読み取りまたは書き込みが含まれますが、これらに限定されません。ファイルなど。

誰かがこの規則の使用を支持する議論を私に与えることができますか? または、このルールの利点と、なぜそれが重要なのか、または実装するのが良い考えなのかを説明してください。これは、PSR 1 の完全な実装をサポートし、適切なケースを作成するのに役立ちます。

4

1 に答える 1

43

クラスが自動ロードされるとき、アプリケーションの状態は変更されるべきではないという考え方です。状態を変更するコード(実際に実行されるコード)は、別のファイルセットに含める必要があります。

これにより、予測可能になり、ロジックをクラスメソッドに暗黙的に保持する必要があります。

コーディング標準が存在するため、人々は同様のスタイルでコーディングすることを忘れないでください。コーディング標準を採用する利点は、コードベースが自己矛盾がなく、ルールに従っている他のプロジェクトと一貫していることです。

PSR-1は、主に誰もがすでに行っていたことに従います。クラスが定義されているのと同じ場所でロジックを実行する必要があると感じた場合は、より良い場所またはアプローチがある可能性が非常に高くなります。

最後に..のためにPSR-1を採用しないでください。特定の場所で規則に従わない正当な理由がある場合は、規則を破ってください。それらは法律ではありません。常識が最高に君臨します。

出典:私はそのドキュメントの寄稿者の1人です。

于 2012-11-08T22:30:34.573 に答える