2016-06-29 4 views
0

私は、カスタムユーティリティクラスを作成するためのLaravel 5.2の「ベストプラクティス」が何であるか疑問に思っています。laravelでデータベースとやり取りしないモデルを作成しますか?

私は、各ファイルをcomposer.jsonファイルに登録することによって使用できるApp/Http /内のヘルパーについて読んだことがあります。しかし、ヘルパーファイルはプレーン関数ファイルでなければならないことも読んでいます。クラスではありません。

私は、ファイルを扱う一連のメソッドを含むFileというモデルを作成するのが正しい方法かどうか疑問に思っています。データベースとのやりとりがないので、関連するテーブルの特異な名前として名前を付ける必要があります。しかし、私はそれのようなテーブルがない場合は?

DBと話せないクラスを作成するためのクリーンな方法はありませんか?どんな助けでも本当に感謝しています。

+0

私はあなたのように、ヘルパークラスを作成すると言っています。ただし、Laravelには既にFileクラスが存在します。 –

+0

これは名前の問題に過ぎません。簡単な修正。だから、ヘルパーは関数ファイルだけでなければならないというのは本当ですか?私はサービスプロバイダについて読んでいますが、彼らは良い解決策ではありませんか?自分のクラスを作成して登録し、コードで使用できるように見えますか? – Caius

+0

ヘルパーは誰かがそれを与えた名前です。必要に応じて機能を変更しないで、サービスプロバイダと呼ぶことができます:D。あなたはそれをあなたが望むものと呼ぶことができます。 –

答えて

4

Laravelプロジェクトには、データベースとやりとりすることなく、基盤となるデータベーステーブルによってサポートされていない新しいクラスを追加することは絶対にお勧めです。

例えば、あなたはユーティリティスタイルのクラスという名前のファイルを追加したい、場合、私はapp/Utility/File.phpでこれを追加することをお勧め

結果として、このようになり

あなたのクラス定義:

<?php 
namespace App\Utility; 

class File 
{ 
    //methods and properties here 
} 

ファイルをLaravelのApp名前空間の中に置くので、作曲者のオートローダーがあなたのためにファイルを見つけるのを手伝ってくれます。あなたは、クラスを使用する必要がどこに、単にそのようにそれをインスタンス化:ユーティリティクラスのこれらの種類を追加するとき

$file = new \App\Utility\File(); 

god object anti-patternの警戒してください。可能であれば、いつでもsingle responsibility principleに従ってください。

+0

ああ!ありがとう!これは本当に素晴らしい説明です!私は文字通り、神のクラスを構築しようとしていました。だからもし私がファイルをアップロードしてその内線をチェックする必要があるならば、2つのクラスが正しいはずです。 1つはアップロード用、もう1つは小切手用? – Caius

+0

これは正しいです。その場合、おそらく2つのクラスが必要になります。 1つは「FileUpload」と呼ばれ、もう1つは「FileValidator」と命名されました。 つまり、Laravelはこの機能をすぐにサポートしているので、あなた自身で何かを書く前に、ファイルのアップロードとバリデータを読み上げるべきです。車輪を再構築しないでください! –

+0

もう一度、ありがとう! – Caius

関連する問題