Mod berbilang aplikasi sistem


.

│ ├ ─lihat             Lihat direktori

│ └─...                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     bimbang terpaksa kembali kepada anda ├─awam            Direktori WEB (direktori akses luaran)

│ ├─index.php         Fail masukan

│ ├─router.php ├─router.php      

─t fail ujian pantas akses                Menulis semula untuk apache

│ ├─View View Directory View Directory. Dengan fungsi kumpulan penghalaan, mekanisme fleksibel yang serupa dengan pelbagai aplikasi boleh direalisasikan.

Jika anda ingin menggunakan mod berbilang apl, anda perlu memasang sambungan mod berbilang aplikasi think-multi-app.

composer require topthink/think-multi-app

Kemudian struktur direktori aplikasi anda perlu dilaraskan seperti berikut (perbezaan utama adalah dalam direktori aplikasi). .

│ │ ├─config Direktori konfigurasi (keutamaan)

│ │ └─ ... Lagi direktori perpustakaan

│ ├─admin Aplikasi Backend

│ │ ├─pengawal Direktori pengawal

│ │ ├─model │ Katalog model

│ │ ─ ├│ │ │ ┎ Lihat │ │ ├─config │ Direktori konfigurasi (keutamaan)

│ │ └─ ...       Lagi direktori perpustakaan kelas

│ ├─awam                Direktori WEB (direktori akses luaran)

│ ├ ├─admin.php fail entri backend

│ ├ ├─index.php fail entri

│ ├─Router.php fail ujian cepat

│ └ └─.htaccess Rewriting untuk Apache

│ 应用—Katalog Konfigurasi Aplikasi CONFIG

─ konfigurasi aplikasi indeks dDex

─ konfigurasi aplikasi pentadbir

│ 图 视 ─ Lihat Katalog Paparan

─Katalog Paparan Aplikasi Indeks Indeks

Katalog Paparan Aplikasi Admin ADMIN

│ 路 ─ Direktori definisi laluan laluan

─ ├ ─direktori definisi laluan aplikasi indeks indeks

─ direktori definisi laluan aplikasi pentadbir

│ ├─masa jalan                                                                                                                                                                                             masa jalan               Boleh menyokong berbilang pintu masuk Fail, aplikasi juga boleh mengekalkan kumpulan pengawal melalui pengawal berbilang peringkat.

Penyerahan berbilang aplikasi automatik

menyokong akses kepada berbilang aplikasi dalam fail kemasukan yang sama, dan menyokong pemetaan dan penyesuaian aplikasi. Jika anda mengakses melalui fail kemasukan index.php dan tidak menetapkan nama aplikasi, sistem secara automatik menggunakan mod berbilang aplikasi automatik.

Alamat URL mod berbilang aplikasi automatik menggunakan

// 访问admin应用
http://serverName/index.php/admin
// 访问shop应用
http://serverName/index.php/shop
secara lalai, maksudnya, parameter pertama alamat pathinfo mewakili nama aplikasi semasa, diikuti dengan laluan atau pengawal/operasi aplikasi.

Jika anda mengakses

http://serverName/index.php

secara terus, anda sebenarnya sedang mengakses aplikasi lalai indeks Anda boleh menentukan aplikasi lalai melalui parameter konfigurasi app.php dalam fail konfigurasi app.php.

// 设置默认应用名称
'default_app' => 'home',

Kemudian lawati

http://serverName/index.php

Malah, apa yang anda akses ialah aplikasi rumah.

Dalam mod berbilang aplikasi automatik, penghalaan adalah bebas untuk setiap aplikasi, jadi anda tidak boleh meninggalkan parameter aplikasi dalam URL. Tetapi ia boleh diselesaikan menggunakan pengikatan nama domain.


Pengiktirafan pintar berbilang aplikasi

Jika tiada entri atau nama domain yang mengikat, aplikasi dalam URL tidak wujud, contohnya, akses:

rreeeDengan mengandaikan bahawa aplikasi think tidak wujud, sistem akan bertukar secara automatik kepada satu aplikasi pada masa ini Dalam mod aplikasi, jika terdapat laluan global yang ditentukan, semakan padanan laluan juga akan dilakukan.

Jika kami mentakrifkannya dalam laluan global route/route.php:

http://serverName/index.php/think

Mengakses URL di atas akan mengeluarkan

Route::get('think', function () {
    return 'hello,ThinkPHP!';
});

Jika anda ingin mengakses terus laluan aplikasi lalai apabila aplikasi think tidak wujud, anda boleh terus akses laluan aplikasi lalai dalam app.php Konfigurasikan

hello,ThinkPHP!

Pada masa ini, anda akan mengakses penghalaan di bawah aplikasi rumah.

Entri aplikasi tambahan

Membenarkan penciptaan fail kemasukan berasingan untuk setiap aplikasi tanpa mengakses berbilang aplikasi melalui fail entri index.php, contohnya, mencipta fail masukan admin.php untuk mengakses aplikasi pentadbir.

// 开启应用快速访问
'app_express'    =>    true,
// 默认应用
'default_app'    =>    'home',

Apabila berbilang aplikasi menggunakan entri berbeza, kandungan setiap fail masukan adalah sama Nama fail masukan lalai (tanpa akhiran) ialah nama aplikasi.

Gunakan kaedah berikut untuk mengakses aplikasi pentadbir

// [ 应用入口文件 ]
namespace think;

require __DIR__ . '/../vendor/autoload.php';

// 执行HTTP应用并响应
$http = (new  App())->http;
$response = $http->run();
$response->send();
$http->end($response);

Jika nama fail penyertaan anda tidak konsisten dengan aplikasi, contohnya, dalam aplikasi pentadbir latar belakang anda, nama fail masukan menggunakan test.php, maka fail masukan perlu ditukar kepada:

http://serverName/admin.php

Dapatkan Aplikasi semasa

Jika anda perlu mendapatkan nama aplikasi semasa, anda boleh menggunakan

// [ 应用入口文件 ]
namespace think;

require __DIR__ . '/../vendor/autoload.php';

// 执行HTTP应用并响应
$http = (new  App())->http;
$response = $http->name('admin')->run();
$response->send();
$http->end($response);

direktori aplikasi untuk mendapatkannya

aplikasi berbilang aplikasi dan aplikasi berbilang aplikasi mempengaruhi nilai beberapa laluan sistem Untuk memahami dengan lebih baik kandungan manual ini, Anda mungkin perlu memahami lokasi yang diwakili oleh laluan sistem berikut.

Lokasi direktori kelas App. root_path () base direktori direktori di bawah direktori root Plication direktori direktori konfigurasidirektori runtimedirektori masa jalan rangka kerja, mod aplikasi tunggal ialah direktori masa jalan bagi direktori akar, mod berbilang aplikasi ialah subdirektori masa jalan/aplikasiruntime_path()

Nota: Aplikasi menyokong penggunaan pakej komposer Pada masa ini, direktori mungkin direktori di mana perpustakaan kelas pakej komposer berada.

Untuk penggunaan berbilang aplikasi bukan automatik, jika anda ingin memuatkan aplikasi komposer, anda perlu menetapkan laluan aplikasi dalam fail kemasukan:

app('http')->getName();

Pemetaan aplikasi

Dalam mod berbilang aplikasi automatik, alias aplikasi pemetaan disokong, contohnya:

// [ 应用入口文件 ]
namespace think;

require __DIR__ . '/../vendor/autoload.php';

// 执行HTTP应用并响应
$http = (new  App())->http;
$response = $http->path('path/to/app')->run();
$response->send();
$http->end($response);

Selepas pemetaan aplikasi, nama aplikasi asal tidak akan dapat diakses Contohnya, aplikasi pentadbir di atas tidak boleh diakses secara langsung, tetapi hanya boleh diakses melalui aplikasi think.

Pemetaan aplikasi menyokong analisis pan, contohnya:

'app_map' => [
    'think'  =>  'admin',  // 把admin应用映射为think
],

bermakna jika aplikasi yang diakses oleh URL tiada dalam pemetaan yang ditetapkan pada masa ini, ia akan dipetakan secara automatik ke aplikasi indeks.

Jika anda ingin menggunakan komposer untuk memuatkan aplikasi, anda perlu menyediakan

'app_map' => [
    'think' =>  'admin',  
    'home'  =>  'index',  
    '*'     =>  'index',  
],

Aplikasi mengikat nama domain

Jika berbilang aplikasi anda menggunakan berbilang subdomain atau nama domain bebas untuk akses, anda boleh menentukan domain nama dalam fail konfigurasi config/app.php dan pengikatan aplikasi.

'app_map'    =>    [
    'think' => function($app) {
        $app->path('path/to/composer/app');
    },
],

Melarang akses aplikasi

Jika anda tidak mahu aplikasi diakses melalui URL, contohnya, anda menambah subdirektori biasa untuk meletakkan beberapa perpustakaan kelas awam, anda boleh menetapkan

'domain_bind' => [
    'blog'        =>  'blog',  //  blog子域名绑定到blog应用
    'shop.tp.com' =>  'shop',  //  完整域名绑定
    '*'           =>  'home', // 二级泛域名绑定到home应用
],




base_path ()
Direktori di mana aplikasi semasa berada. adalah sama dengan direktori asas. Jika Ia ialah mod berbilang aplikasi, iaitu subdirektori aplikasi/aplikasiapp_path()

direktori konfigurasi di bawah direktori root
()config_path