システムマルチアプリケーションモード
マルチアプリケーション
デフォルトのインストール後、展開にはシングル アプリケーション モードが使用されます。ディレクトリ構造は次のとおりです。 ─app アプリケーション ディレクトリ
│ til─controller
クラス ライブラリ カタログ │ C ─ パブリック Web ディレクトリ (外部アクセス ディレクトリ) # ─nDex.php 入口ファイル # ─ ─ Router.php クイック テスト ファイル # ─.htaccess の書き換えアパッチ │ 図 ─ ビュー カタログの表示 ─ CONFIG アプリケーション構成カタログ ─ ルート ルート定義ディレクトリ ─ 実行時にランタイム アプリケーションが実行される アプリケーション モードの利点は、次のとおりです。シンプルかつ柔軟であり、URL アドレスはルーティングを通じて完全に制御可能です。ルーティンググループ化機能により、複数のアプリケーションと同様の柔軟な仕組みを実現できます。 マルチアプリケーション モードを使用する場合は、マルチアプリケーション モード拡張機能 think-multi-app をインストールする必要があります。composer require topthink/think-multi-app次に、アプリケーション ディレクトリ構造を次のように調整する必要があります (主な違いはアプリ ディレクトリにあります)。 #│││。。
#│ │ └─ ... │ その他のクラス ライブラリ ディレクトリ
│ §─public WEBディレクトリ(外部アクセスディレクトリ)
│ §─admin.php │ バックエンドエントリーファイル
│ §─index.php │ エントリーファイル
│ §─router.php │ クイックテストファイル
│ └─ Apache 書き換え用 .htaccess
│ アプリケーション—CONFIG アプリケーション構成ディレクトリ
─ ─ DEDEX INDEX アプリケーション構成
# │ └ ─ ADMIN 管理者 アプリケーション構成
│ §─view ディレクトリの表示ディレクトリの表示表示 。 ├─route。 ├runtime各アプリケーションに使用して、スルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルースルーを使用して使用して使用しています。複数のエントリファイルをサポートできます。アプリケーションは、マルチレベル コントローラを通じてコントローラ グループを維持することもできます。
自動マルチアプリケーション展開同じエントリ ファイル内の複数のアプリケーションへのアクセスをサポートし、アプリケーションのマッピングとカスタマイズをサポートします。 Index.php エントリ ファイルを介してアクセスし、アプリケーション名を設定しない場合、システムは自動的に自動マルチアプリケーション モードを採用します。
自動マルチアプリケーション モードの URL アドレスはデフォルトで使用されます
// 访问admin应用 http://serverName/index.php/admin // 访问shop应用 http://serverName/index.php/shop
つまり、pathinfo アドレスの最初のパラメータは現在のアプリケーション名を表し、その後にルートまたはアプリケーションのコントローラー/操作します。
http://serverName/index.php
に直接アクセスすると、実際にはインデックスのデフォルト アプリケーションにアクセスすることになります。デフォルト アプリケーションは、app.php 構成ファイルのdefault_app 構成パラメータを通じて指定できます。
// 设置默认应用名称 'default_app' => 'home',
次に、
http://serverName/index.phpにアクセスします。実際には、ホーム アプリケーションにアクセスします。
自動マルチアプリケーション モードでは、ルーティングはアプリケーションごとに独立しているため、URL 内のアプリケーション パラメータを省略することはできません。ただし、ドメイン名バインドを使用すると解決できます。
マルチアプリケーションのインテリジェントな識別
バインディング エントリまたはドメイン名がない場合、URL 内のアプリケーションは存在しません。たとえば、次の場所にアクセスしてください。
http://serverName/index.php/think
think アプリケーションがないと仮定すると、この時点でシステムは自動的にシングル アプリケーション モードに切り替わり、グローバル ルートが定義されている場合はルート マッチングもチェックされます。
route/route.php グローバル ルートで定義すると:
Route::get('think', function () { return 'hello,ThinkPHP!'; });
上記の URL にアクセスすると
hello,ThinkPHP!
が出力されます。think アプリケーションを存在させたくない場合は、直接アクセスしてください。デフォルトアプリケーションのルーティングはapp.php
// 开启应用快速访问 'app_express' => true, // 默认应用 'default_app' => 'home',
で設定できます。このとき、ホームアプリケーション配下のルーティングにアクセスします。
アプリケーション エントリの追加
index.php エントリ ファイルを通じて複数のアプリケーションにアクセスすることなく、アプリケーションごとに個別のエントリ ファイルを作成できるようにします (admin.php の作成など)。管理アプリケーションにアクセスするためのエントリ ファイル。
// [ 应用入口文件 ] namespace think; require __DIR__ . '/../vendor/autoload.php'; // 执行HTTP应用并响应 $http = (new App())->http; $response = $http->run(); $response->send(); $http->end($response);
複数のアプリケーションが異なるエントリを使用する場合、各エントリ ファイルの内容は同じです。デフォルトのエントリ ファイル名 (サフィックスなし) はアプリケーション名です。
次のメソッドを使用して管理アプリケーションにアクセスします
http://serverName/admin.php
エントリ ファイル名がアプリケーションと一致しない場合 (たとえば、バックグラウンド管理アプリケーションなど)、エントリ ファイル名には test.php が使用されます。
// [ 应用入口文件 ] namespace think; require __DIR__ . '/../vendor/autoload.php'; // 执行HTTP应用并响应 $http = (new App())->http; $response = $http->name('admin')->run(); $response->send(); $http->end($response);
Get the current application
現在のアプリケーション名を取得する必要がある場合は、次のように変更する必要があります。
app('http')->getName();
アプリケーション ディレクトリを取得してください。
単一アプリケーション モードとマルチアプリケーション モードは、一部のシステム パスの値に影響します。このマニュアルの内容を理解するには、次のシステム パスで表される場所を理解する必要がある場合があります。
プロジェクトが配置されているディレクトリはデフォルトで自動的に取得され、エントリ ファイルが App クラスをインスタンス化するときに渡すことができます。 | root_path() | |
base_path() | ||
現在のアプリケーションが配置されているディレクトリ。シングル アプリケーション モードの場合は、基本ディレクトリと同じです。マルチ アプリケーション モードの場合は、基本ディレクトリと同じです。アプリケーション モードの場合、これは app/application サブディレクトリです | app_path() | |
ルート ディレクトリの下の config ディレクトリ | config_path() | |
フレームワークがランタイムのときのディレクトリ、シングル アプリケーション モードはルートのランタイム ディレクトリですマルチアプリケーション モードは、ランタイム/アプリケーションのサブディレクトリです。 | runtime_path( ) |