Heim  >  Artikel  >  Backend-Entwicklung  >  Lernen des Laravel View-Moduls

Lernen des Laravel View-Moduls

不言
不言Original
2018-06-13 16:34:391151Durchsuche

Dieser Artikel führt Sie hauptsächlich in die relevanten Informationen zum View-Modul des Laravel-Lernprogramms ein. Es bietet einen gewissen Referenz-Lernwert für alle, die es benötigen Lassen Sie uns gemeinsam mit dem Herausgeber unten lernen.

Vorwort

Dieser Artikel führt Sie hauptsächlich in die relevanten Informationen zum View-Modul in Laravel ein und stellt sie Ihnen als Referenz und zum Studium zur Verfügung Folgende Worte Mehr gibt es nicht zu sagen, werfen wir einen Blick auf die ausführliche Einleitung.

Dieser Artikel basiert auf der Analyse und dem Schreiben des Routing-Modulcodes der Laravel 5.4-Version;

Dateistruktur

Ansicht Die Dateistruktur und Funktionen des Moduls sind in der folgenden Abbildung dargestellt:


Der ungefähre Prozess der visuellen Präsentation:

1, starten Sie die Darstellung der Ansicht, indem Sie die Methode view() aufrufen

2 (1) Durchlaufen Sie den Pfad nacheinander. Wenn der Dateiname einen Namespace hat (d. h. den Teil vor ::), verwenden Sie das registrierte Pfadarray, das dem Namespace entspricht, andernfalls verwenden Sie das globale Pfadarray (Pfadvariable in der IlluminateViewFileViewFinder-Klasse). );

(2) Kombinieren Sie den aktuellen Pfad, den Dateinamen und den Suffixnamen (die Standardreihenfolge ist blade.php, php, css), um festzustellen, ob die Datei existiert

(3) Wenn die Datei nicht vorhanden ist, wird eine Ausnahme gemeldet: Die entsprechende Ansicht. Wenn die Datei nicht vorhanden ist, wird die entsprechende Engine zum Parsen gemäß dem Suffixnamen aufgerufen

3. Wenn es sich um ein CSS-Suffix handelt, wird die Datei-Engine verwendet und die Kernaufrufmethode ist file_get_contents;


4. Wenn es sich um ein PHP-Suffix handelt, verwenden Sie php Die Kernaufrufmethode ist


ob_start();
include $__path;
ob_get_clean();

5. Wenn es sich um ein Blade.php-Suffix handelt, verwenden Sie die Blade-Engine

Diese Engine ergreift die Initiative, um die Datei zwischenzuspeichern. Wenn die Cache-Datei nicht abgelaufen ist, wird die Cache-Datei direkt aufgerufen. Andernfalls wird sie neu kompiliert und die Cache-Datei wird über sha1 (befindet sich im Speicher/) generiert. Framework/Views-Verzeichnis);


Blade-Engine-Kompilierung


Die Blade-Engine kompiliert Dateien über eine große Anzahl regulärer Übereinstimmungen und Ersetzungsimplementierung;

protected $compilers = [ 
 'Comments', // 注释部分
 'Extensions', // 扩展部分
 'Statements', // 语句块 (@ 开头的指令)
 'Echos',  // 输出
];

protected function parseToken($token) {
 list($id, $content) = $token;
 
 if ($id == T_INLINE_HTML) {
  foreach ($this->compilers as $type) {
   $content = $this->{"compile{$type}"}($content);
  }
 }
}

Während des Analysevorgangs verwendet Blade zunächst die Funktion token_get_all, um den HTML-Code (T_INLINE_HTML) in der betrachteten Ansichtsdatei abzurufen durch den PHP-Interpreter) und führen Sie dann nacheinander eine regelmäßige Ersetzung der Kommentare, Erweiterungen, Anweisungen und Echos durch

Kommentarteil

Der Kern Der Code lautet wie folgt: Ersetzen Sie das Kommentarsymbol „{{-- --}}“. Der umschlossene Code wird durch eine leere Zeichenfolge ersetzt Erweiterungsteil


Fügen Sie über die Erweiterungsmethode eine benutzerdefinierte Verarbeitungsrückruffunktion zu BladeCompiler hinzu und führen Sie einen benutzerdefinierten Textabgleich und eine benutzerdefinierte Textersetzung für den Vorlageninhalt durch.

Der Kerncode ist enthalten die IlluminateViewBladeCompiler-Datei wie folgt:

preg_replace("/{{--(.*?)--}}/s", '', $value);

Anweisungsersetzung

Dieser Teil dient zum Ersetzen der Anweisungen die mit dem Framework wie @if und den über die Direktivenmethode registrierten Anweisungen geliefert werden. Führen Sie eine Textersetzung durch.

Die vom Framework bereitgestellten Anweisungen bestehen aus den folgenden zehn Teilen:

ViewCompilersConcernsCompilesAuthorizations: Berechtigungsprüfung

Zu den Befehlen gehören: @can, @cannot, @elsecan, @elsecannot, @endcan, @endcannot


ConcernsCompilesComponents: bezogen auf Komponenten und Slots

Zu den Anweisungen gehören: @component, @endcomponent, @slot, @endslot

ConcernsCompilesConditionals: bezogen auf Urteilsaussagen
    Zu den Anweisungen gehören: @if, @unless, @else, @elseif, @endif, @endunless, @isset, @endisset, @hassection

  • ConcernsCompilesIncludes: eingebettete Datei
  • Zu den Anweisungen gehören: @each, @include, @includeif, @includewhen

  • ConcernsCompilesInjections: Service Injection
  • Zu den Anweisungen gehören: @inject

  • ConcernsCompilesLayouts: bezogen auf das Layout
  • Zu den Anweisungen gehören: @extends, @section, @parent, @yield, @show, @append, @overwrite, @stop, @endsection

  • ConcernsCompilesLoops: bezogen auf Schleifen
  • Zu den Anweisungen gehören: @forelse, @empty, @endforelse, @endempty, @for, @foreach, @break, @continue, @endfor, @endforeach, @while, @endwhile

  • BedenkenCompilesRawPhp: im Zusammenhang mit nativen PHP-Anweisungen
  • Zu den Befehlen gehören: @php, @endphp, @unset

  • ConcernsCompilesStacks: bezogen auf den Stack
  • Zu den Befehlen gehören: @stack, @push, @endpush, @prepend, @endprepend

  • ConcernsCompilesTranslations: im Zusammenhang mit der Lokalisierungsübersetzung
  • Zu den Anweisungen gehören: @lang, @endlang, @choice

  • Echo ersetzt

  • Echo-Ausgabe ist für {!!} , {{ }} für reguläre Ersetzung;

  • {!! !!} gibt nicht maskierte Zeichen aus, die zur Ausgabe nativer HTML-Tags-Werte verwendet werden;

  • {{ }} gibt normal aus und unterstützt die Ersetzung durch ternäre Operatoren.

  • {{ }}} gibt Escape-Zeichen aus und unterstützt die Ersetzung durch ternäre Operatoren 🎜>

Ersetzung durch ternäre Operatoren bezieht sich auf: {{ $a ?: „Standardwert“ }} (oder {{$a oder „Standardwert“}}) Ersetzung in {{ isset($ a) ? $a : „Standardwert“}}


Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Lernen aller hilfreich ist PHP chinesische Website!

Verwandte Empfehlungen:

Erfahren Sie mehr über die Übertragung von Arrays in Ansichten im Laravel 5-Framework

Modell, Controller und Ansichtsgrundlagen des Laravel 5-Frameworks Prozesslernen

Das obige ist der detaillierte Inhalt vonLernen des Laravel View-Moduls. 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