Heim Backend-Entwicklung PHP-Tutorial Detaillierte Erklärung des View-Moduls von Laravel

Detaillierte Erklärung des View-Moduls von Laravel

Sep 21, 2017 am 10:17 AM
ie laravel view

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 das Rendern 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 vorhanden ist

(3) Wenn die Datei nicht existiert, wird eine Ausnahme gemeldet: Die entsprechende Ansicht Die Datei existiert nicht, die entsprechende Engine wird 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



5. Wenn es sich um ein Blade.php-Suffix handelt, verwenden Sie die Blade-Engine 🎜>Diese Engine übernimmt die Initiative zum Cachen. Wenn die Cache-Datei nicht abgelaufen ist, wird sie direkt aufgerufen und die Cache-Datei wird über sha1 (im Speicher/Framework/) generiert. Ansichtenverzeichnis (unten);


ob_start();
include $__path;
ob_get_clean();
Nach dem Login kopieren
Blade-Engine-Kompilierung



Die Blade-Engine kompiliert Dateien über eine große Anzahl regulärer Matching- und Replacement-Implementierung;

Während des Parsing-Prozesses verwendet Blade zunächst die Funktion token_get_all, um den HTML-Code (T_INLINE_HTML) in der Ansichtsdatei abzurufen, der berücksichtigt wird den PHP-Interpreter-Teil und führen Sie dann den regelmäßigen Austausch der Kommentare, Erweiterungen, Anweisungen und Echos-Teile nacheinander durch.

Kommentarteil


Der Kerncode ist Ersetzen Sie wie folgt das Kommentarsymbol „{{ -- --}}“. Der umschlossene Code wird durch eine leere Zeichenfolge ersetzt:
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);
  }
 }
}
Nach dem Login kopieren


Erweiterungsteil

Fügen Sie über die Extend-Methode 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 befindet sich in der IlluminateViewBladeCompiler-Datei , wie folgt:
preg_replace("/{{--(.*?)--}}/s", '', $value);
Nach dem Login kopieren


Anweisungsersetzung

Dieser Teil soll den Text der Anweisungen ersetzen, die kommen mit dem Framework wie @if und den durch die Direktivenmethode registrierten Anweisungen;

Die vom Framework bereitgestellten Anweisungen bestehen aus den folgenden zehn Teilen:
// 自定义的文本替换扩展 数组
protected $extensions = [];

protected function compileExtensions($value) {
 foreach ($this->extensions as $compiler) {
  $value = call_user_func($compiler, $value, $this);
 }
 
 return $value;
}
Nach dem Login kopieren

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 Befehlen 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 wird zu {{ isset($ a) ? $a : „Standardwert“}}

    Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des View-Moduls von Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    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

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    AI Hentai Generator

    AI Hentai Generator

    Erstellen Sie kostenlos Ai Hentai.

    Heißer Artikel

    R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
    3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Beste grafische Einstellungen
    3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
    3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: Wie man alles in Myrise freischaltet
    4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

    Heiße Werkzeuge

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    Vergleich der neuesten Versionen von Laravel und CodeIgniter Vergleich der neuesten Versionen von Laravel und CodeIgniter Jun 05, 2024 pm 05:29 PM

    Die neuesten Versionen von Laravel 9 und CodeIgniter 4 bieten aktualisierte Funktionen und Verbesserungen. Laravel9 übernimmt die MVC-Architektur und bietet Funktionen wie Datenbankmigration, Authentifizierung und Template-Engine. CodeIgniter4 nutzt die HMVC-Architektur, um Routing, ORM und Caching bereitzustellen. In Bezug auf die Leistung sorgen das auf Dienstanbietern basierende Designmuster von Laravel9 und das leichte Framework von CodeIgniter4 für eine hervorragende Leistung. In praktischen Anwendungen eignet sich Laravel9 für komplexe Projekte, die Flexibilität und leistungsstarke Funktionen erfordern, während CodeIgniter4 für schnelle Entwicklung und kleine Anwendungen geeignet ist.

    Wie vergleichen sich die Datenverarbeitungsfunktionen in Laravel und CodeIgniter? Wie vergleichen sich die Datenverarbeitungsfunktionen in Laravel und CodeIgniter? Jun 01, 2024 pm 01:34 PM

    Vergleichen Sie die Datenverarbeitungsfunktionen von Laravel und CodeIgniter: ORM: Laravel verwendet EloquentORM, das eine relationale Klassen-Objekt-Zuordnung bereitstellt, während CodeIgniter ActiveRecord verwendet, um das Datenbankmodell als Unterklasse von PHP-Klassen darzustellen. Abfrage-Builder: Laravel verfügt über eine flexible verkettete Abfrage-API, während der Abfrage-Builder von CodeIgniter einfacher und Array-basiert ist. Datenvalidierung: Laravel bietet eine Validator-Klasse, die benutzerdefinierte Validierungsregeln unterstützt, während CodeIgniter über weniger integrierte Validierungsfunktionen verfügt und eine manuelle Codierung benutzerdefinierter Regeln erfordert. Praxisfall: Beispiel einer Benutzerregistrierung zeigt Lar

    Laravel – Handwerkerbefehle Laravel – Handwerkerbefehle Aug 27, 2024 am 10:51 AM

    Laravel – Artisan Commands – Laravel 5.7 bietet eine neue Möglichkeit, neue Befehle zu behandeln und zu testen. Es enthält eine neue Funktion zum Testen von Handwerkerbefehlen und die Demonstration wird unten erwähnt?

    Was ist einsteigerfreundlicher: Laravel oder CodeIgniter? Was ist einsteigerfreundlicher: Laravel oder CodeIgniter? Jun 05, 2024 pm 07:50 PM

    Für Anfänger bietet CodeIgniter eine sanftere Lernkurve und weniger Funktionen, deckt aber die Grundbedürfnisse ab. Laravel bietet einen größeren Funktionsumfang, weist jedoch eine etwas steilere Lernkurve auf. In Bezug auf die Leistung schneiden sowohl Laravel als auch CodeIgniter gut ab. Laravel verfügt über eine umfangreichere Dokumentation und aktive Community-Unterstützung, während CodeIgniter einfacher und leichtgewichtiger ist und über starke Sicherheitsfunktionen verfügt. Im praktischen Fall der Erstellung einer Blogging-Anwendung vereinfacht EloquentORM von Laravel die Datenmanipulation, während CodeIgniter mehr manuelle Konfiguration erfordert.

    Laravel vs CodeIgniter: Welches Framework ist besser für große Projekte? Laravel vs CodeIgniter: Welches Framework ist besser für große Projekte? Jun 04, 2024 am 09:09 AM

    Bei der Auswahl eines Frameworks für große Projekte haben Laravel und CodeIgniter jeweils ihre eigenen Vorteile. Laravel ist für Anwendungen auf Unternehmensebene konzipiert und bietet modularen Aufbau, Abhängigkeitsinjektion und einen leistungsstarken Funktionsumfang. CodeIgniter ist ein leichtes Framework, das sich eher für kleine bis mittelgroße Projekte eignet und Wert auf Geschwindigkeit und Benutzerfreundlichkeit legt. Für große Projekte mit komplexen Anforderungen und einer großen Anzahl von Benutzern sind die Leistung und Skalierbarkeit von Laravel besser geeignet. Für einfache Projekte oder Situationen mit begrenzten Ressourcen sind die leichten und schnellen Entwicklungsfunktionen von CodeIgniter idealer.

    Fragen und Antworten zum Design der PHP-Microservice-Architektur für Unternehmensanwendungen Fragen und Antworten zum Design der PHP-Microservice-Architektur für Unternehmensanwendungen May 07, 2024 am 09:36 AM

    Die Microservice-Architektur nutzt PHP-Frameworks (wie Symfony und Laravel) zur Implementierung von Microservices und folgt RESTful-Prinzipien und Standarddatenformaten zum Entwerfen von APIs. Microservices kommunizieren über Nachrichtenwarteschlangen, HTTP-Anfragen oder gRPC und nutzen Tools wie Prometheus und ELKStack zur Überwachung und Fehlerbehebung.

    Laravel vs CodeIgniter: Welches Framework ist besser für kleine Projekte? Laravel vs CodeIgniter: Welches Framework ist besser für kleine Projekte? Jun 04, 2024 pm 05:29 PM

    Für kleine Projekte eignet sich Laravel, für größere Projekte, die starke Funktionalität und Sicherheit erfordern. CodeIgniter eignet sich für sehr kleine Projekte, die geringes Gewicht und Benutzerfreundlichkeit erfordern.

    Welche ist die bessere Template-Engine, Laravel oder CodeIgniter? Welche ist die bessere Template-Engine, Laravel oder CodeIgniter? Jun 03, 2024 am 11:30 AM

    Vergleichen Sie Laravel's Blade und die Twig-Vorlagen-Engine von CodeIgniter und wählen Sie je nach Projektanforderungen und persönlichen Vorlieben: Blade basiert auf der MVC-Syntax, die eine gute Codeorganisation und Vorlagenvererbung fördert. Twig ist eine Bibliothek eines Drittanbieters, die flexible Syntax, leistungsstarke Filter, erweiterten Support und eine Sicherheits-Sandbox bietet.

    See all articles