2009-04-27 11 views
-1

私は簡単なPHPフレームワークを作成しようとしていますが、クラスの構造がどのクラスに拡張されるべきかなどはわかりません.Firslyルータ、ビュークラスなどの基本クラスはいくつかの基本データにアクセスする必要があります私の質問が明確でない場合は、フレームワークに関する自分の経験やアイデアを説明してください。もしあなたが知っているのであれば、zend、cakephpなどの既知のframewokについて話してください。 symfonyシンプルなPHPフレームワークに最適なクラス構造は何ですか?

+0

この中から始まっている、約100の他の質問の重複:http://stackoverflow.com/questions/694929/whats-your-no-framework-php-framework –

答えて

1

ベストクラスの構造はありません。あなたがしようとしていることに依存します。純粋なMVCデザインを意味しますか?最もテスト可能ですか?最も理解しやすい?

+0

ルーティング、テンプレートなどの基本機能で最も改善可能、layout、auth、Mvc、controller pluginブログ、CMSスクリプトのような自作のための大きなプロジェクトではない –

1

親指の単純なルールがあります:

  • あなたは、標準のフレームワークが
  • を果たすことができないか、あなたは何が必要ありません良い標準のフレームワークを使用する必要があることを必要としているのいずれかが。

最初のケースでは、制限がデザインの運転面になります。

フレームワークのクラス構造の一般的なデザインルールはありません。しかし、あなたがあなた自身のものを書くことにした場合、心の中でこれを維持しよう:

  • モジュール
  • 間の依存関係を最小化することは、必ずオーバーヘッド
  • 話しAを最小限に抑えるようにしてください既定値に
  • を与えることを試みます早期に欠陥を発見するためにそれについての同僚とたくさん。
+0

はい、私はクラス間の不必要な関係をたくさん作りたくありません。私は2つのグループにクラスを分けることができると思います。ルータクラスまたはビュークラスのような最初の1つの基本クラス。これらのクラスは他人のデータにアクセスすることができませんし、2つ目はフロントコントローラーなど他のクラスを使用するグループです。例えばフロントコントローラーは他人のデータにアクセスし、他の人のメソッドを呼び出すことができます。 例えばフロントコントローラーのディスパッチ方式をフロントコントローラーと呼ぶ場合、ルータークラスのルートメソッドやレンダークラスなどの他のクラスの必要なメソッドを呼び出すビュークラス –

0

あなたが他の誰かのフレームワークで働いたことがないなら、どのアイデアがあなたのために働いているのか分からないのでしょうか。もしあなたがディスオーダーされたスパゲッティコードでしか働かなかったなら、あなたは何が理にかなっているかについていくつかの考えを持っています。関連していない複数のプロジェクトでスパゲッティコードを解体するために実質的な再編成を行った場合は、フレームワークを構築する際にどのように考えているかを知っておく必要があります。あなたは、フレームワークを書きたいかをしっかり考えを持っていませんが、1を書きたい場合は

:-)、私はあなたが何から始めて、有機的にそれを構築する必要があると思います。しかし、インクルードファイルをどこに置いても愚かなものであっても、どのように見せたいか考えておく必要があります。つまり、必要なのは出発点です。あなたがそれに遭遇すると、それは醜さを再考する問題です。まもなく、データベースハンドラ、ディスパッチ機構、おそらくデータアクセス層、おそらくテンプレートシステムさえあれば!

@MrFoxに応答すると、危険な依存関係に気づくべきです。明らかに、データアクセス層はデータベースハンドラに依存します。だからあなたはあなたのデータベースハンドラがあなたのデータアクセス層に依存しないようにしていません。実際には、お互いに親密な知識を持たせたくありません。合理的な「ブラックボックス」インターフェースでなければなりません。

また、フレームワークの数が「1」のオブジェクトの階層構造を構築してみてください。これは、アクションがモデル・ハンドラーであると考えることを意味します。私は個人的にこの誤って適用された抽象化に問題があるので、これはあなたのためにもうまくいかない場合、このアイデアを捨てることを恐れることはありません。 @ティンドールは言ったように、それを行うための単一の「正しい」方法はありません。

関連する問題