Fungsi dan definisi kemasukan fail



Takrif kemasukan fail

6.0 Fail kemasukan aplikasi lalai terletak di public/index.php, dan kandungan lalai adalah seperti berikut:

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

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

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

Jika anda tidak mempunyai keperluan penyesuaian khas, tidak perlu berbuat apa-apa pada fail entri Tukar.

Lokasi fail kemasukan direka untuk menjadikan penggunaan aplikasi lebih selamat. Sila cuba ikuti direktori awam kerana satu-satunya direktori yang boleh diakses oleh web boleh diletakkan dalam direktori yang tidak boleh diakses oleh WEB.

Fail masukan konsol

Selain fail kemasukan aplikasi, sistem juga menyediakan fail masukan konsol, yang terletak di think dalam direktori akar projek (perhatikan bahawa fail ini tidak mempunyai sebarang akhiran).

Kod fail adalah seperti berikut:

#!/usr/bin/env php
<?php
namespace think;

// 加载基础文件
require __DIR__ . '/vendor/autoload.php';

// 应用初始化
(new App())->console->run();

Fail masukan konsol digunakan untuk melaksanakan arahan konsol, contohnya:

php think version

Sistem mempunyai beberapa arahan konsol yang biasa digunakan jika anda memasang sambungan tambahan, kawalan yang sepadan akan juga ditambah arahan Taiwan semuanya dilaksanakan melalui fail entri ini.

Jika terdapat direktori perpustakaan kelas seperti pengawal, model dan paparan terus di bawah direktori aplikasi, ia adalah mod aplikasi tunggal (mod lalai Jika subdirektori aplikasi dibuat di bawah direktori aplikasi, ia akan menjadi mod berbilang aplikasi secara automatik .

Perbezaan struktur direktori antara aplikasi tunggal dan berbilang aplikasi adalah seperti berikut (terutamanya dalam direktori aplikasi).

Mod aplikasi tunggal

├─direktori aplikasi aplikasi

│ ├─pengawal ├─model ├─direktori model

│ ├─lihat Direktori Lihat ├─

├─WEB awam direktori (direktori capaian luaran)

│ ├─index.php Fail masukan

│ ├─router.php Fail ujian pantas

│ └─.htaccess untuk penulisan semula aplikasi apache├

Konfigurasi Cat ├

G FI

├ Laluan Katalog Definisi Laluan

├ Katalog Direktori Masa Jalan

Mod Berbilang Aplikasi ─ Direktori Aplikasi APP

├ ─ ├ ├ ├ │ │ ├├pengawal direktori model model

│ │ ├─lihat Paparan direktori

│ │ ├─config                    Direktori konfigurasi (keutamaan)

│                                                                                                                                                                                                                                              ─ Aplikasi latar belakang ADmin

│ ─config     Direktori konfigurasi (keutamaan)

│  │  └─ ...        Lagi Kategori direktori perpustakaan

) direktori perpustakaan awam

)

─ ├ ─ fail masuk latar belakang admin.php │ │ └─admin │ └ konfigurasi aplikasi pentadbir └─admin                                                                                                           permohonan pentadbir direktori runtime

Seperti yang dapat dilihat daripada struktur direktori, setiap aplikasi kekal secara relatifnya bebas, dan setiap aplikasi mempunyai fail kemasukan yang sepadan Aplikasi ini juga boleh mengekalkan kumpulan pengawal melalui pengawal berbilang peringkat.

Apabila berbilang aplikasi menggunakan entri yang berbeza, kandungan setiap fail masukan adalah sama Nama fail masukan lalai (tanpa akhiran) ialah nama aplikasi Jika nama fail masukan anda tidak konsisten dengan aplikasi, seperti aplikasi pentadbir bahagian belakang anda , nama fail masukan menggunakan think.php, maka fail masukan perlu ditukar kepada:

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

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

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

Mod aplikasi tunggal dan berbilang aplikasi akan mempengaruhi nilai beberapa laluan sistem untuk memahami kandungan dengan lebih baik manual ini, anda mungkin perlu memahami Lokasi berikut yang diwakili oleh beberapa laluan sistem.

Lokasi direktori kelas adalah instantiated masuk. App::getRootPath()App::getBasePath() App::getAppPath()
Direktori asas app direktori di bawah direktori root
Direktori aplikasiDirektori di mana aplikasi semasa terletak Jika ia adalah mod aplikasi tunggal, ia adalah sama dengan direktori asas Jika ia adalah mod berbilang aplikasi, ia adalah app/subdirektori aplikasiApp类的时候传入。App::getRootPath()
基础目录根目录下的app目录App::getBasePath()
应用目录当前应用所在的目录,如果是单应用模式则同基础目录,如果是多应用模式,则是app/应用子目录App::getAppPath()
配置目录根目录下的config目录App::getConfigPath()
运行时目录框架运行时的目录,单应用模式就是根目录的runtime目录,多应用模式为runtime/应用子目录App::getRuntimePath()
核心类库目录框架核心类库的think目录App::getThinkPath()
🎜Direktori konfigurasi🎜🎜 config direktori di bawah direktori root🎜🎜App ::getConfigPath()🎜🎜🎜🎜 Direktori masa jalan🎜🎜Direktori apabila rangka kerja ialah mod aplikasi tunggal ialah direktori masa jalan bagi direktori berbilang aplikasi masa jalan/subdirektori aplikasi🎜🎜App ::getRuntimePath()🎜🎜🎜🎜Direktori perpustakaan kelas teras🎜🎜fikir direktori kelas teras rangka kerja perpustakaan🎜🎜Apl::getThinkPath()🎜🎜 🎜🎜

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 entri:

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

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

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

Pengerahan berbilang aplikasi automatik

pendukung akses

aplikasi dalam aplikasi fail kemasukan yang sama, dan menyokong pemetaan dan penyesuaian aplikasi.

Anda hanya perlu menetapkan

// 开启自动多应用模式
'auto_multi_app'    =>    true,

dalam fail konfigurasi config/app.php Anda tidak perlu membuat fail masukan untuk setiap aplikasi Sebaliknya, anda boleh mengakses berbilang aplikasi secara automatik melalui fail masukan index.php. Jika anda menggunakan akses URL berbilang masukan Ia adalah:

// 访问admin应用
http://serverName/admin.php
// 访问shop应用
http://serverName/shop.php

Selepas menghidupkan mod berbilang aplikasi automatik, ia menjadi

// 访问admin应用
http://serverName/index.php/admin
// 访问shop应用
http://serverName/index.php/shop

Maksudnya, parameter pertama alamat pathinfo mewakili nama aplikasi semasa, dan yang berikut adalah laluan permohonan.

Jika anda mengakses

http://serverName/index.php

secara langsung, anda sebenarnya sedang mengakses aplikasi indeks (lalai ialah nama fail kemasukan Jika aplikasi lalai anda bukan indeks, anda boleh menentukan aplikasi lalai melalui parameter konfigurasi aplikasi_default).

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

Kemudian lawati

http://serverName/index.php

Malah, apa yang anda akses ialah aplikasi rumah.

Pemetaan aplikasi

Pemetaan aplikasi hanya menyokong mod berbilang aplikasi automatik

menyokong pemetaan alias aplikasi, contohnya:

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

Selepas pemetaan aplikasi, contohnya, nama aplikasi yang boleh diakses tidak akan menjadi asal. aplikasi admin di atas tidak boleh diakses terus Akses hanya boleh diakses melalui aplikasi think.

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

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

Aplikasi mengikat nama domain

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

Melarang akses aplikasi

Melarang akses aplikasi hanya menyokong mod berbilang aplikasi automatik

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

'deny_app_list' =>    ['common']