Heim >PHP-Framework >Denken Sie an PHP >Ausführungsprozess des ThinkPHP-Konfigurationsquellcodes

Ausführungsprozess des ThinkPHP-Konfigurationsquellcodes

咔咔
咔咔Original
2020-10-09 15:11:051598Durchsuche

Dieser Artikel führt hauptsächlich eine einfache Ausführungsanalyse des Quellcodes von Config durch. Ich hoffe, Sie erhalten ein tieferes Verständnis vom Diagramm bis zum Code. Das oben erwähnte Yaconf spiegelt sich hier wider, und jeder Artikel soll den Weg für das Folgende ebnen.

6. Konfigurationsquellcode-Ausführungsprozess

Obwohl das oben genannte Yaconf für die Konfigurationsquellcodeanalyse nicht sehr hilfreich ist, erweitert es auch Ihr Denken Zukunft.

Kommen wir zum Punkt. Wenn Sie wissen möchten, wie Config geladen und analysiert wird, zeichnen wir zunächst ein Bild. Werfen wir einen Blick auf den Ausführungsprozess des Ladens der Konfiguration.

Zurück zu public/index.php, ich habe in der vorherigen Ausgabe erwähnt, dass das automatische Laden von Klassen während des Ladevorgangs der Datei base.php ausgeführt wird.

Dann ist das Laden der Konfiguration im Bild unten dargestellt. Hier geht es um Container, und es wird ein separates Thema zur Analyse der Container geben.

Keine weitere Erklärung. Dieser Code führt die Ausführungsmethode der Datei „D:phpstudy_proWWWThinkPHPSourceCodeAnalysisthinkphplibrarythinkApp.php“ aus.

Und in Was in der run-Methode verfolgt werden muss, ist Then run方法中需要追踪的是initialize应用初始化这个函数

接着在initialize这个方法中就会看到配置文件的蛛丝马迹,随之而来就是一个初始化应用init

直到走到init方法中,才算是进入了主题。

开始了自动加载配置文件,并且还调用了config类中的load方法,也是需要一起阅读的。

来到这里之后需要简单的进行解读一下

这段代码会直接走到elseif中,因为在app目录下没有设置config目录

并且这里有个configPath这个属性熟悉吧!这个值最终就是D:phpstudy_proWWWThinkPHPSourceCodeAnalysisconfigErst wenn Sie die Init-Methode erreichen, geben Sie das Thema ein.

Automatisches Laden der Konfigurationsdatei gestartet und auch die Lademethode in der Konfigurationsklasse aufgerufen, die ebenfalls zusammen gelesen werden muss.
Nachdem Sie hierher gekommen sind, müssen Sie es kurz interpretieren

Dieser Code geht direkt zu elseif, weil in der App Im Verzeichnis ist kein Konfigurationsverzeichnis festgelegt

Und hier gibt es ein configPath-Attribut, Sie sind also damit vertraut! Dieser Wert lautet am Ende D:phpstudy_proWWWThinkPHPSourceCodeAnalysisconfig Alle Dateien im Konfigurationsverzeichnis auslesen. 🎜🎜An die Lademethode der Konfigurationsklasse übergeben🎜

Hier sind einige Wissenspunkte zu erwähnen, lassen Sie uns sie einfach noch einmal durchgehen

  • scandir: Gibt alle Dateien in einem Verzeichnis in aufsteigender Reihenfolge zurück, und der zweite Parameter 1 bedeutet, dass die Dateien in einem Verzeichnis in absteigender Reihenfolge zurückgegeben werden Dateien.
  • pathinfo: Gibt Dateiinformationen in Form eines Arrays zurück, nämlich Verzeichnisname, Dateiname und Erweiterung. Sie können das Bild unten sehen.

In diesem Code gibt es ein Attribut configExt. Dieser Wert wird aus der Umgebungsvariablen ausgelesen . Überzeugungen gehalten. Ich hoffe, dass Kakas Artikel im riesigen Internet Ihnen ein wenig helfen können. Ich bin Kaka, bis zum nächsten Mal.

Das obige ist der detaillierte Inhalt vonAusführungsprozess des ThinkPHP-Konfigurationsquellcodes. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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