Heim > PHP-Framework > Denken Sie an PHP > So konfigurieren Sie thinkphp, um mehrere Anwendungen und mehrere Konfigurationen zu konfigurieren

So konfigurieren Sie thinkphp, um mehrere Anwendungen und mehrere Konfigurationen zu konfigurieren

Freigeben: 2020-05-07 09:25:25
nach vorne
2746 Leute haben es durchsucht

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');
Nach dem Login kopieren
Nach dem Login kopieren

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'
Nach dem Login kopieren

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));
Nach dem Login kopieren

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)));
    }
Nach dem Login kopieren

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');
Nach dem Login kopieren

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');
Nach dem Login kopieren
Nach dem Login kopieren

. Fügen Sie dann Folgendes hinzu: <🎜 in der Anwendungskonfigurationsdatei ./Application/Common/Conf /config.php >

//设置默认模块
&#39;DEFAULT_MODULE&#39;    =>  &#39;Home&#39;,
Nach dem Login kopieren

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(&#39;APP_PATH&#39;,&#39;./Application_API/&#39;);
Nach dem Login kopieren

Beachten Sie, dass neu hinzugefügte Anwendungen zunächst ein Home-Modul haben müssen, auch wenn

//设置默认模块
&#39;DEFAULT_MODULE&#39;    =>  &#39;Api&#39;,
Nach dem Login kopieren
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!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage