ThinkPHP のグループ化機能は、開発者によって広く使用されている非常に実用的な価値のある機能であり、中規模および大規模なプロジェクトで管理が困難な多すぎる MVC 層ファイルの問題を解決できます。
ThinkPHP 3.1.2 バージョンで追加された独立グループ化機能は、このような問題に対する新しい解決策を提案し、コンポーネントベースの開発モデルにより適しています。この機能を見てみましょう。
1. 概要
独立グループ化機能は元のグループ化モードの動作に影響を与えず、元のグループ化モードはディレクトリ構造を移動するだけで、アプリケーション コードを変更することなく独立グループ化モードのアップグレードを完了できます。
そして、新しい独立したグループは、独立して簡単にロード、アンロード、移動できるため、通常のグループ ファイルが異なるディレクトリに散在するという元の問題を取り除くことができます。
独立グループの URL アクセスは、元の通常のグループと同じです。構成グループのリストは、引き続き APP_GROUP_LIST パラメーターを使用して構成されます。デフォルトのグループを設定するには、DEFAULT_GROUP パラメータを使用します。例:
新しい独立したグループ化は元の通常のグループ化モードを完全に置き換えることができますが、元のグループ化プロジェクトのスムーズなアップグレードを考慮するために、この新しいバージョンでは構成パラメータが追加されています:
APP_GROUP_MODE は、グループ化モードの設定に使用されます。デフォルトは 0 で、1 に設定すると、独立したグループ化モードが有効になります。
独立グループ モードにアップグレードする必要があるかどうかは、次の内容を読んだ後、賢明な選択ができると信じています。
2. ディレクトリ構造
独立グループ化モードを有効にした後、プロジェクト ディレクトリの下に独立グループ化ディレクトリを作成する必要があります。このディレクトリは、APP_GROUP_PATH パラメータを通じてプロジェクト構成ファイルによって構成できます。何も変更を加えていないと仮定すると、Modules ディレクトリの下には、モデル、コントローラー、ビュー、構成ファイル、関数ファイルなどを含む各グループのサブディレクトリが完全に独立しています。グループの移動とアンインストールを簡単に実装できます。
標準の独立したグループのディレクトリ構造は次のとおりです (ホーム グループを例にします):
(注: 現在、独立したグループのディレクトリ構造は手動で作成する必要があります)
基本的に、エントリーファイルを持たない独立グループを除けば、他の独立プロジェクトの構造は基本的に整っていることがわかります。
元の通常のグループから独立したグループにアップグレードするには、プロジェクト構成ファイルに
次に、対応するグループに属する MVC ファイルを元のプロジェクトの Lib ディレクトリに配置し、グループの機能、設定、および言語 (存在する場合) ファイルを順番に配置し、独立したプロジェクトのディレクトリ構造に従って、対応するディレクトリに配置します。上のグループ。
3.公開ファイル
独立したグループ化を採用した後、元のプロジェクトの Lib ディレクトリは、グループ化されたパブリック クラス ライブラリ ファイルとして設計されます。複数の独立したグループがパブリックな Action クラスまたは Model クラスを呼び出す必要がある場合 (実際には、他の階層コントローラーやモデル クラスも含まれます)、これらのパブリック クラスをプロジェクトの Lib ディレクトリの下の対応するディレクトリに配置します (実際のアップグレード プロセス中、これらのパブリック クラス ライブラリ ファイルは基本的にディレクトリ構造を変更しないため、移動する必要はありません)。
グループ化されたパブリック クラス ライブラリ ファイルは手動でロードする必要はなく、すべて自動ロード メカニズムを使用します。
したがって、独立グループ化モードを使用した最終的な実際のプロジェクト ディレクトリ構造は次のようになります:
4. テンプレートファイル
独立してグループ化されたテンプレート ファイルは、プロジェクトの Tpl ディレクトリから独立したグループ ディレクトリの Tpl ディレクトリに移動されます。たとえば、元のテンプレート グループのサブディレクトリは必要ありません。
リーリー
5. クラスライブラリを呼び出します
独立したグループ化をクラス ライブラリにインポートする場合、使用方法は基本的にプロジェクト クラス ライブラリをインポートする場合と同じです。例:
共通のクラス ライブラリ設計を使用せずに他のグループ化されたクラス ライブラリを呼び出す必要がある場合は、以下を使用できます: