私はZendプロジェクトで通貨変換に関するいくつかの機能を持っています。私はコントローラとモデルの機能を利用したいと思います。このコードをどこに置くのがベストプラクティスですか?それとも、両方の機能が両方の場所で使用されていて、おそらくプロジェクトの構造を再考して両方の場所で必要ではないというインジケータがあるということですか?コントローラーとモデル用に再利用可能なコードを置く場所
6
A
答えて
6
純粋主義者は、あなたがコントローラコードで通貨換算をしているのであれば、そこにはビジネスロジックが本当にあってはいけないと考えているかもしれないと主張します。しかし、時には実践的な考察が純粋主義よりも重要です。これがそのようなケースの1つであると仮定しよう。 :-)
あなたの通貨クラスがかなりシンプルなユーティリティタイプのクラスの場合は、 "utils"という名前の新しいディレクトリを作成し、そのディレクトリをアプリケーションのリソースローダーに追加します
protected function _initResourceLoader()
{
$this->_resourceLoader->addResourceType('utility', 'utils', 'Utility');
}
次にあなたがそのディレクトリにCurrency.php
という名前のファイルに保存されているApplication_Utility_Currency
というクラスを作成して、のような静的メソッドを呼び出すことができます:ブートストラップヨーヨー場合は、このアプローチは特に有用であろう
Application_Utilility_Currency::convert($from_currency, $to_currency, $amount);
を家を探していた他のユーティリティクラスもありました。
しかし、あなたの通貨クラスが豊富な機能(為替レートデータの取得などの外部サービスへの接続など)を含んでいる場合、IMOは、「ユーティリティ」ではなく「サービス」として扱うほうがよいでしょう"私の「モデル」の定義はかなり緩やかであり、そのデータがアプリケーションデータベースにあるかどうかにかかわらず、すべてのデータ関連サービスが含まれているため、クラスがより複雑なものであれば、モデル。
関連する問題
- 1. コントローラの再利用可能な機能を置く場所
- 2. ReactJs再利用可能なロジックを置く場所
- 3. 角度:再利用可能なコンフィギュレーションを置く場所
- 4. 再利用可能なコードを作る
- 5. 再利用コードを入れる場所
- 6. 再利用可能なコードのアーキテクチャ
- 7. Fancybox再利用可能なコード
- 8. xml "再利用可能な"コード
- 9. 再利用可能なコードsoapクライアントlaravel
- 10. 再利用可能なglslコードを書くには?
- 11. 再利用可能なコントロール
- 12. 再利用可能なプリプロセッサ__COUNTER__
- 13. 再利用可能なコンポーネント
- 14. 再利用可能なリモートモーダルレール
- 15. 再利用可能な、
- 16. 再利用可能なコンポーネント
- 17. 再利用可能なビュー?
- 18. SF3:再利用可能なバンドルとモデルの更新
- 19. CakePHP:再利用可能なコンテンツブロックとMVC
- 20. 再利用可能なSwiftエクステンションとセレクタ
- 21. ASP.NET Webサイト用の再利用可能なC#コードの作成
- 22. jQueryコードを再利用可能な関数にリファクタリングする
- 23. jQueryで再利用可能なコードを作成するには?
- 24. 再利用可能なコードを作成するには?
- 25. 再利用可能なアクティビティに戻る
- 26. 再利用可能なhtmlコントロールについてjavascriptコード
- 27. 再利用可能なコースオントロジーを検索
- 28. Django再利用可能マーケットプレイス
- 29. 再利用可能なコードを書き込むためのベストプラクティス
- 30. 場所:GPS /ネットワークのアクセス許可:利用可能であれば
ありがとうございました。言及したように、外部サービスに接続して新しいレートを取得するロジックもあります。したがって、おそらくモデルが最適です。他の場所で役に立つユーティリティ機能について知っておくとよいでしょう。 – user1140535