Heim >PHP-Framework >Denken Sie an PHP >So konfigurieren Sie thinkphp, um mehrere Anwendungen und mehrere Konfigurationen zu konfigurieren
Multimodul
In ThinkPHP 3.2.3 ist das Standardanwendungsverzeichnis ./Application und das Standardmodul unten ist „Home“. Modul: Wenn Sie zu diesem Zeitpunkt ein Admin-Modul für Hintergrundanwendungen hinzufügen müssen, fügen Sie Folgendes hinzu:
// 绑定Admin模块到当前入口文件 define('BIND_MODULE','Admin');
Führen Sie in der Standardeintragsdatei ./index.php zu diesem Zeitpunkt http://serverNmae/index.php aus , und es wird in sein. Ein Admin-Modul wird im Verzeichnis /Application generiert. Wenn Sie jedoch zu diesem Zeitpunkt auf http://serverName/index.php zugreifen, greifen Sie tatsächlich auf das neu hinzugefügte Admin-Modul zu, selbst wenn Sie
//设置默认模块 'DEFAULT_MODULE' => 'Home'
in ./Application/Common/Conf/config.php hinzufügen , wird es nicht richtig funktionieren.
Tatsächlich besteht die eigentliche Bedeutung der Definition von BIND_MODULE in der im Handbuch erwähnten Eintragsdatei darin, das Standardmodul zu definieren. Siehe: ./ThinkPHP/Library/Think/Dispatcher.calss.php Diese Datei definiert die integrierte Dispatcher-Klasse von ThinkPHP, die zum Vervollständigen der URL-Analyse, Weiterleitung und Planung verwendet wird (siehe Abschnitt „Systemprozess“ im Handbuch). wobei Zeile :140
// 获取模块名称 define('MODULE_NAME', defined('BIND_MODULE')? BIND_MODULE : self::getModule($varModule));
Um im statischen Methodenversand den Modulnamen zu erhalten, fragen Sie zunächst ab, ob BIND_MODULE in der Eintragsdatei definiert ist. Wenn eine Definition vorhanden ist, ist der Wert des definierten MODULE_NAME das definierte BIND_MODULE. Rufen Sie andernfalls diese statische private Methode getModule in der Klasse auf, um den tatsächlichen Modulnamen zu erhalten:
/** * 获得实际的模块名称 */ static private function getModule($var) { $module = (!empty($_GET[$var])?$_GET[$var]:C('DEFAULT_MODULE')); unset($_GET[$var]); if($maps = C('URL_MODULE_MAP')) { if(isset($maps[strtolower($module)])) { // 记录当前别名 define('MODULE_ALIAS',strtolower($module)); // 获取实际的模块名 return ucfirst($maps[MODULE_ALIAS]); }elseif(array_search(strtolower($module),$maps)){ // 禁止访问原始模块 return ''; } } return strip_tags(ucfirst(strtolower($module))); }
Wenn die URL bei dieser Methode nicht das durch die Konfigurationsdatei neu definierte VAR_MODULE enthält (Standard ist m , in ./ThinkPHP/Conf/convention.php), suchen Sie nach dem Wert von DEFAULT_MODULE, der in der Konfigurationsdatei definiert ist.
Aus der obigen Analyse kann geschlossen werden, dass BIND_MODULE tatsächlich das Standardmodul definiert. Wenn das Projekt mehrere Module enthält, konfigurieren Sie es nicht auf diese Weise.
Wenn Sie BIND_MODULE in der Standardeintragsdatei ./index.php auskommentieren (d. h. die Standardeintragsdateikonfiguration verwenden), können Sie auf das Admin-Modul zugreifen, indem Sie direkt auf http://serverName/admin zugreifen. weil in dieser Eintragsdatei ist das Anwendungsverzeichnis ./Application definiert, sodass beim Zugriff auf http://serverName/admin tatsächlich auf die Indexmethode in ./Application/Admin/Controller/IndexController.class.php zugegriffen wird.
ThinkPHP 3.2.3 kann auf diese Weise mehrere Module konfigurieren. Es ist nicht erforderlich, dies in der Eintragsdatei und der Konfigurationsdatei zu definieren. Dies ist auch der von ThinkPHP offiziell empfohlene Gruppierungsmodus.
Eine andere Konfiguration ist ein Design mit mehreren Einträgen, das heißt, Sie erstellen admin.php auf derselben Ebene wie die Standardeintragsdatei index.php und fügen index.php hinzu:
// 绑定Home模块到当前入口文件 define('BIND_MODULE','Home');
in admin.php Verwenden Sie dieselbe Konfiguration wie index.php, mit Ausnahme der Definition von BIND_MODULE. Ändern Sie die Definition von BIND_MODULE in:
// 绑定Admin模块到当前入口文件 define('BIND_MODULE','Admin');
. Fügen Sie dann Folgendes hinzu:
//设置默认模块 'DEFAULT_MODULE' => 'Home',Zu diesem Zeitpunkt können Sie auf das Home-Modul zugreifen, indem Sie auf http://serverName/index.php zugreifen, und auf das Admin-Modul, indem Sie auf http://servername/admin.php zugreifen. Sie können jedoch nicht auf http://serverName/admin zugreifen, da index.php derzeit nur auf das Home-Modul zugreifen kann.
Mehrere Anwendungen
Normalerweise muss ThinkPHP 3.2.3 nicht den Multi-Anwendungsmodus verwenden, da dies in den meisten Fällen durch Multi-Modular- und Multi-Anwendungen erreicht werden kann. Einstiegsdesign Lösung von Anwendungserweiterungsanforderungen. Wenn Sie den Multianwendungsmodus verwenden müssen, z. B. zum Erstellen der Anwendung Application_API, können Sie das Verzeichnis Applicaiton_API auf derselben Verzeichnisebene wie ./Application erstellen und die Eintragsdatei ./api.php hinzufügen Verweisen Sie auf das Anwendungsverzeichnis ./Application_API:// 定义应用目录 define('APP_PATH','./Application_API/');Beachten Sie, dass neu hinzugefügte Anwendungen zunächst ein Home-Modul haben müssen, auch wenn
//设置默认模块 'DEFAULT_MODULE' => 'Api',in ./Application_API/Common/Conf/config festgelegt ist .php, möglicherweise ist zunächst ein Home-Modul erforderlich, andernfalls wird ein Fehler gemeldet: Index-Controller konnte nicht geladen werden. Empfohlenes Tutorial: „
TP5“
Das obige ist der detaillierte Inhalt vonSo konfigurieren Sie thinkphp, um mehrere Anwendungen und mehrere Konfigurationen zu konfigurieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!