3

私は個人用の CMS を構築しており、コア機能とクラスを整理するためのアドバイスが必要です。私はフォルダを持っています:

/shared
   /classes
       DB.php
       Session.php
       Config.php
       ...
   /libraries
       Arrays.php
       DateTime.php
       Email.php
       ...

「classes」フォルダー内のファイルには、コア クラス (ファイルごとに 1 つのクラス) が含まれています。

さて、問題は /libraries/ についてです。どのクラスでも使用できる関数が含まれており、別のライブラリの他の関数を使用することもあれば、コア クラスにアクセスする必要があることもあります。それらを関数として記述するだけですか、それとも静的にしてクラスにラップする必要がありますか? 基本的にどこにでも必要ですが、整理しておきましょう。

4

2 に答える 2

1

それらを関数として書くべきですか、それとも静的にしていくつかのクラスでラップするべきですか?基本的に私はどこでもそれらを必要としますが、それらを整理しておいてください。

名前空間についてはもう調べましたか?すべての関数を名前空間にラップするのがおそらく最善の策です。

于 2009-01-21T21:02:22.237 に答える
0

私の提案は、最初に CMS のアーキテクチャ上の目標について熟考することです。確かに、それは 100% あなたのものになるでしょう。

そのため、ライブラリを呼び出すライブラリを用意することはお勧めしません。私の見解では、アプリケーション フローの最初のいくつかのコア クラスを除いて、どのクラスも他のものに依存するべきではありません。これは、作業を他の単一目的の自己完結型クラスに分散したいためです。コア クラスで特異性と原子性を目指す必要があります。

アーキテクチャ パターンがどうなるかはわかりませんが (MVC、HMVC、または PAC になると思います)、初期化の基礎となるコア クラス [/core] をいくつか定義するのが最善だと思います要求されたコントローラー [/controllers] を初期化する前に、着信要求要求を解析し、いくつかのデフォルト タスクを実行するために必要ないくつかのライブラリ [/libraries] をインスタンス化することにより、アプリケーション。

ライブラリの目的は 1 つである必要があります。セッション処理ライブラリは、セッション、ルーティング ライブラリ ルーティングなどのみを処理する必要があります。最初に、ベース コントローラとベース モデルを作成して [/core] に配置し、コントローラ [/controllers] とモデル [/models] でベースを拡張できます。 [/core] のコントローラーとモデル。

いつものように、コンポーネントの結合が少ないほど良いです。優れたソリューションは、その目的において、軽量で小さく、広範です。コア クラスを変更するだけでアプリケーション全体に大きな影響を与えることができるため、将来設計のアイデアを変更する場合に役立ちます。他の場所をさらに変更する必要はありません。

于 2009-01-21T21:28:11.077 に答える