11

私はかなり混乱しています。

Reddit で数人の開発者にコードのレビューを依頼しました。このように見えます。

Template::load('register', array('error_message' => Language::translate('username_in_use'));

したがって、register.php をロードし、{error_message} を翻訳に置き換えます。(申し訳ありませんが、このユーザー名は使用中です。別のユーザー名を選択してください。)

彼らは、あまりにも多くの静的呼び出しを使用するのは悪い習慣だと言いました. それでも彼らは、$this を完全に取り除き、静的呼び出しを使用する Laravel フレームワークを提案しています。

Laravelが上品なフレームワークである場合、これが悪い習慣である場合、誰かが私に説明できますか?

4

1 に答える 1

28

静的状態は遍在しており、状態をリセットすることはできないため、テスト可能性を完全に破壊します。さらに、コードの他の側面では予測できない方法で状態に影響を与える可能性があり、その結果、非常に予測不可能な動作が発生する可能性があります。

Laravel 4 は、静的な「ファサード」を使用してこれを防ぎます。これらのファサードは、「IoC 解決の構文上の省略形」です。それらはシンタックス シュガーを提供し、密結合コードを防ぎます。

ファサードによって解決されるクラスは変更可能で、モック システムなどを注入できます。

もちろん、これは静的アクセスの他の側面を実際に解決するものではありません。つまり、さまざまな機能を注入することはできません。しかし、Laravel アプリケーションでは、通常、ドメイン内でファサードを使用することはありません。これは Web トランスポート層向けです。Web トランスポート層は既にフレームワークと緊密に結合されているため、非常に役立ちます。これは、アプリケーションのその層の DSL に似たものを作成することで、その事実をうまく利用しています。

繰り返しますが、ドメイン層の奥深くでファサードを使用しないことを検討してください。

于 2013-02-26T04:05:01.850 に答える