2016-09-11 10 views
2

私はレガシーCakePHPプロジェクト(CakePHP 1.3)に取り組んでいます。共有モデルロジックをどこに置くべきかを考え出すのは苦労しています。私はLaravelのバックグラウンドから来て、通常はサービスクラスやLaravelファサードを作成し、必要な場所で使用しますが、これはケーキのやり方ではないようです。 (たぶん私はこれについて間違っていますか?)CakePHP:共有モデルロジックはどこに置くの?

プロジェクトは、一意のデータベースキーを生成するためにハッシュを使用します。ハッシュ関数自体は/vendorsです。ハッシュを生成し、ハッシュを解読するために使用されるいくつかのヘルパー関数があり、これらは現在いくつかの異なるモデルで繰り返されている。理想的には、私はこれらの関数を単一のクラスに抽出し、それらを必要とするモデルから静的に呼び出すことを望んでいます:Hash::make($params)Hash::decode($hash)などCakePHPアプリケーションでこれをどのように設定できますか?

答えて

3

CakePHP 1.3は非常に古いです。だからあなたは基本的に名前空間を使っていないフレームワークのバージョンを扱っています。しかし、これがあなたの使用を妨げるわけではありません。また、公式にサポートされていません。

あなたがモデルやサービスと呼んだ場合、あなたが心配しているような心配が適切に分離されている限り、それは重要ではないと思います。

ロジックを抽象化する必要があるクラスをモデルフォルダに作成するだけです。あなたの特殊なケースでは、私はa behaviorが密接な結合につながる静的な方法のトンを実装する代わりに同様に動作すると思います。 HashBehaviorを作成して、テーブルオブジェクトで再利用可能なコードを取得します。実際、私はLaravelがすべての静的なことについて嫌いです(そうです、ファサードについては知っていますが、まだ...)。あなたがよく書かれたコードではなく、あなたのリファクタリングに幸運の一部を継承したようなサウンド!

+0

私は行動を見ていましたが、私の状況が彼らの良いユースケースであるかどうかはわかりませんでした。ちょうどそれを実装し、それが私が望むものを正確に行います。ありがとう! –

-2

ええと1.3は非常に古いプロジェクトです(あなたが理解したように)。 共有コードをAppModelクラス

+1

これは一時的な解決策では問題ありませんが、すべてを親にプッシュするだけでは大したことはありません。これを私のモデルヘルパー全員に行うと、最終的にそのクラスは混乱することになります。 –

関連する問題