2016-08-19 10 views
1

私はすべてのサンドボックスプロジェクトでしばらくの間実装していたモデルはほとんどありません。一定の実装といくつかのモデルの違いは何ですか?理論的には同じファイルを含む私自身のlib。Nette:モデルとベンダーのライブラリ

質問#1:実行時間に違いがありますか&ライブラリからのいくつかのモデルオブジェクトと同じオブジェクトの間にページが読み込まれていますか?

質問#2:少数のモデルの代わりにライブラリを使用するのはなぜですか?

質問#3:この2つに違いがない場合は、簡単なコンポーザーの実装のためだけに自分のlibを作成するか、モデルを使用したカスタムサンドボックスgit repの方がいいですか?

+0

「モデル」とはどういう意味ですか? –

+0

クラス、NetteObjects、例えば私は、basePresenterに実装されているログモデルを持っています。または、Nette/Objectを拡張するObjectを持ち、基本的にはApp/Modelの他のクラスの親です。便利な関数とチェックメソッドが含まれています。次に、最後のアプリからの例、私はカレンダーを構築しました。このカレンダーには、さまざまな日付/時刻関連関数が含まれていて、フロントエンドのデータ構造を作成するためにも使用されていました。 –

+0

私は参照してください。いくつかの最小限のコードが役に立ちます:どこからロードしたいのですか? –

答えて

2
  1. これは無視できないか無視できます。あなたのクラスは常に含まれなければなりません。作曲家のautoloadやnette RobotLoaderに含まれているかどうかは関係ありません。
  2. 特定の機能が他の人を助けることができる場合は、ライブラリを作成することによって、他の人に多くの手助けをすることができます。あなたのアプリにとってあまりにも特定のものであれば、libsディレクトリや何かを直接アプリに入れて、後で必要に応じて簡単に関数を変更することができます。
  3. 私は両方とも言います。サンドボックスの作成と保守は、多くのプロジェクトで共有されるlibよりはるかに簡単です。 libでは、たとえば下位互換性を保つ必要があります。また、関連していないクラスがたくさんある場合、それらから1つのライブラリを作成することは意味がありません。特定の機能を実装するライブラリを増やしてください。たとえば、LogModelを含むロギングクラスです。しかし、あなたが始める前に、あなたが必要とするlibがない場合には、packagistを検索してみてください。ロギングの場合は、Monologが便利です。あなたのカレンダークラスは、図書館の素晴らしい候補者です。
+0

ああ、今すぐ入手!だから、基本的に、主な質問は、それが特定のアプリのカスタムであるかどうか、クラスが関連しているかどうかです。たとえば、私が何らかのCMSを利用する場合、libでなければなりませんが、私たちが何かの話をしているとしたら、データベースの移行ツールのようなものです。私はCMSの一部として使用していますが、私は他のアプリのための独立したモジュールではなく、この特定の機能のためにlibに行くのではなく、クラスとして保持する必要があります。正しい? –

+0

私の意見では、CMSはlibにするには複雑すぎます。一方、dbクラス、ページャなどのような特定の機能を備えたlibをもっとたくさん持っていて、そこからCMSが構成されることになっています。もちろん、githubにCMSアプリを公開して他の人にも提供することができます。データベース移行ツールは、他のアプリケーションと共有できるため、作曲家とともにインストールされたlibの素晴らしい例です。 1つのアプリに固有の機能はあまりないはずです。しかし、UserModelのように、すべてのアプリケーションで同じ方法で使用されているにもかかわらず、libには適していません。あなたが理解したいと思っています。 –

1

私は完全にあなたの状況を理解していない場合でも、私はできる限りお答えしようとするでしょう:本当に、それが配置されているに関係なく、クラスの自動ロード、です)

2)いくつかのクラスが共通の意味を持っていることがわかったら、ライブラリにコードを移動することをお勧めします。例えば、いくつかのディレクトリに抽象化することができます。

  • FileManagerの
  • ImageResizer
  • ACL
  • CMS
  • ...

3)あなたのコードが安定しており、一貫性がある場合(=アプリでは変更されません)、私はパッケージのために行くだろう。あなたがそれをカスタマイズしなければならないなら、私はそれをすべてのアプリケーションに特化したものにしておきます。

これはすべてあなたの特定のクラスに依存します。最高ののは、あなたが持っているプロジェクト全体と問題点を見ることです。

関連する問題