Probleme, die bei der Verwendung von include(require) zum Verschachteln von Include-Dateien in PHP beachtet werden müssen

黄舟
Freigeben: 2023-03-11 11:46:01
Original
1713 Leute haben es durchsucht

/** 
* Author:RDP 
* My mail:abel1314520@gmail.com 
* My blog:  http://blog.teamhaka.com
 */
Nach dem Login kopieren


Hinweis: Die folgenden Anweisungen gelten für include, include_once, require, require_once.

Beispiele sind im Grunde verschachtelte Einschlüsse, sodass a.php b.php enthält und b.php c.php enthält. Die Hauptdiskussion ist die strukturelle Beziehung zwischen a.php und c.php. Unter diesen ist a.php eine Eintragsdatei.

Beim Einbinden der Datei gibt es tatsächlich drei Möglichkeiten für den Pfad .

sind jeweils

ein absoluter Pfad                                                                                                                                                                                                                                           . Drei relative Pfade (./ wird im aktuellen Verzeichnis nicht verwendet) Beispiel: ccc/c.php

Bezüglich der beiden relativen Pfade können Sie intuitiv auf die oben genannten (2) und (3) Unterschiede in den relativen Pfaden achten. Ob ./ vorhanden ist oder nicht, macht beim Verschachteln von Include-Dateien einen großen Unterschied! Einzelheiten werden später erläutert.

Ein Hinweis zur Verwendung absoluter Pfade:

Beim direkten Schreiben absoluter Pfade gibt es nichts zu beachten, bei der Verwendung von dirname< hingegen nicht Wenn Sie 🎜>(FILE) verwenden, um den absoluten Pfad der aktuellen Datei zu erhalten, beachten Sie bitte, dass unabhängig davon, ob die PHP-Datei, in die diese Anweisung geschrieben wird, in anderen Dateien enthalten ist, immer auf den Speicherort verweist der PHP-Datei, in der diese Anweisung geschrieben ist.

Beispiel:

a.php als Eintragsdatei: require './b/b.php';
b.php: require dirname(FILE).'/c.php';
Wenn dann a.php ausgeführt wird, erhält der dirname(FILE) in b.php den absoluten Pfad von b.php wo sich a.php befindet, nicht der absolute Pfad, in dem sich a.php befindet. (In diesem Beispiel bedeutet dies, dass b.php und c.php zum selben Verzeichnis b gehören)

2. Hinweis zur Verwendung relativer Pfade (das aktuelle Verzeichnis verwendet . /) Punkt:

Relative Pfade basieren auf einem bestimmten Verzeichnis, um den Speicherort der Dateien zu bestimmen, die einbezogen werden müssen. Das Basisverzeichnis eines relativen Pfads ist das Verzeichnis, in dem sich die Eintragsdatei für die Programmausführung befindet, unabhängig davon, wie viele Verschachtelungsebenen sie enthält.

Beispiel:

a.php als Eintragsdatei: require './b/b.php';

b.php: require './c/c.php'; //Bitte beachten Sie, dass ./ verwendet wird, wenn das c-Verzeichnis hier enthalten ist

Dann Achten Sie hier darauf, dass sich das c-Verzeichnis, in dem sich c.php befindet, auf der gleichen Ebene wie das b-Verzeichnis befindet, anstatt dass sich das c-Verzeichnis unter dem b-Verzeichnis befindet. Da die Einbindung in b.php einen relativen Pfad verwendet und der Programmeintrag a.php ist, sollte der relative Pfad, der bei der Einbindung von b.php verwendet wird, auf dem Verzeichnis basieren, in dem sich die Eintragsdatei a.php befindet.

Drei Punkte, die bei der Verwendung relativer Pfade zu beachten sind (das aktuelle Verzeichnis verwendet nicht ./):

Wird in zwei Schritten verarbeitet, zunächst mit Die Programmeintragsdatei Das aktuelle Verzeichnis wird als Grundlage für die Suche entlang des relativen Pfads verwendet. Das Finden einer vorhandenen Datei beinhaltet den erfolgreichen Beenden (dasselbe wie oben [relativer Pfad (das aktuelle Verzeichnis verwendet ./)]). Wenn es nicht gefunden werden kann, fahren Sie mit dem zweiten Schritt fort. Das heißt, splice

mit dem in require enthaltenen Pfad in dem Verzeichnis, in dem sich die PHP-Datei befindet, in die die require-Anweisung geschrieben wird. Oder suchen Sie basierend auf dem Verzeichnis, in dem sich die Eintragsdatei befindet Relativer Pfad, der durch Spleißen erhalten wird. Wenn die Datei vorhanden ist, ist die Einbindung erfolgreich. Andernfalls bedeutet dies, dass die eingebundene Datei nicht vorhanden ist. Es ist leichter zu verstehen, wenn man sich Beispiele ansieht.

Beispiel:

a.php als Eintragsdatei: require './b/b.php';

b.php: require 'c/c.php'; //Bitte beachten Sie, dass das c-Verzeichnis hier nicht verwendet wird./

Dann wird c/ zuerst in dem Verzeichnis gesucht, in dem sich die Eintragsdatei a befindet .php befindet sich, falls vorhanden, Erfolg.

Wenn nicht gefunden, verbinden Sie den Pfad von b.php (./b/b.php) und den Pfad von require in b.php (c/c.php), um das verbundene Ergebnis zu erhalten Der relative Pfad von ./b/c/c.php. Suchen Sie nach ./b/c/c.php in dem Verzeichnis, in dem sich die Eintragsdatei a.php befindet. Wenn sie vorhanden ist, bedeutet dies, dass sie erfolgreich ist, andernfalls wird ein Fehler verursacht.

/******************Trennlinie**************************/

Fassen wir kurz die verschachtelte Einbeziehung relativer Pfade zusammen.

Die verschachtelte Einbeziehung relativer Pfade basiert auf dem Verzeichnis, in dem sich die Programmeintragsdatei befindet, um nach Dateien zu suchen, die entlang des relativen Pfads eingefügt werden müssen.

Aber wenn das Konzept des aktuellen Verzeichnisses im relativen Pfad verwendet wird, gibt es Unterschiede. Das heißt, selbst wenn ./ nicht zur Darstellung des aktuellen Verzeichnisses verwendet wird, ist die Verarbeitung unterschiedlich. <🎜>

有./就是以入口文件所在目录为基准来直接搜寻,

没有./,则先以入口文件所在目录为基准来搜寻,找不到的情况下做路径的拼接处理,然后按拼接后的相对路径来搜寻,基准依然是入口文件所在目录。

综合下使用./和不使用./的一个例子

文件结构如下:

/WEBROOT

——–test.php

——–/folder2/test2.php

——–/folder2/folder3/test3.php

作为程序入口的test.php包含test2.php,而test2.php中包含了test3.php。

那么在test2.php中的包含路径的写法有如下差异:

require (&#39;folder2/folder3/test3.php&#39;); //正确! 直接在入口程test.php所在的WEBROOT目录下搜寻folder2/folder3/test3.php  
参考上述的【三 使用相对路径(当前目录不使用./)的注意点】
Nach dem Login kopieren


require (&#39;folder3/test3.php&#39;);  //正确! 拼接相对路径然后搜寻  参考上述的【三 使用相对路径(当前目录不使用./)的注意点】
Nach dem Login kopieren


  1. require
     (
    &#39;./folder2/folder3/test3.php&#39;
    );  
    //正确!  参考上述的【二 使用相对路径(当前目录使用./)的注意点】
    Nach dem Login kopieren


  1. require
     (
    &#39;./test3/test3.php&#39;
    );    
    //错误!入口程序test.php所在的WEBROOT目录下并不存在test3这个目录!参考上述的【二 使用相对路径(当前目录使用./)的注意点】
    Nach dem Login kopieren

    Das obige ist der detaillierte Inhalt vonProbleme, die bei der Verwendung von include(require) zum Verschachteln von Include-Dateien in PHP beachtet werden müssen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!