Maison développement back-end tutoriel php Explication détaillée du module View de Laravel

Explication détaillée du module View de Laravel

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

Cet article vous présente principalement les informations pertinentes sur le module View du didacticiel d'apprentissage Laravel. Le module View est présenté de manière très détaillée à travers un exemple de code. Il a une certaine valeur d'apprentissage de référence pour les études ou le travail de tous les amis qui en ont besoin. Apprenons avec l'éditeur ci-dessous.

Avant-propos

Cet article vous présente principalement les informations pertinentes sur le module View dans Laravel et les partage pour votre référence et votre étude. Mots suivants Pas grand chose à dire, jetons un œil à l'introduction détaillée.

Cet article est basé sur l'analyse et l'écriture du code du module de routage de la version Laravel 5.4

Structure des fichiers

Affichage La disposition des fichiers et les fonctions du module sont illustrées dans la figure ci-dessous :


Le processus approximatif de présentation visuelle :

1 , démarrez le rendu de la vue en appelant la méthode view()


2. Commencez par rechercher le fichier de vue


. (1) Parcourez le chemin dans l'ordre, si le nom de fichier Avec un espace de noms (c'est-à-dire la partie avant ::), utilisez le tableau de chemin enregistré correspondant à l'espace de noms, sinon utilisez le tableau de chemin global (variable paths dans la classe IlluminateViewFileViewFinder );


(2) Combinez le chemin actuel, le nom du fichier et le nom du suffixe (l'ordre par défaut est blade.php, php, css) pour déterminer si le fichier existe


(3) Si le fichier n'existe pas, une exception sera signalée : la vue correspondante Le fichier n'existe pas ; si le fichier existe, le moteur correspondant est appelé pour l'analyse selon le nom du suffixe

;


3. S'il s'agit d'un suffixe CSS, le moteur de fichiers est utilisé et la méthode d'appel principale est file_get_contents ;


4. S'il s'agit d'un suffixe php, utilisez le php. moteur. La méthode d'appel principale est



5 S'il s'agit d'un suffixe blade.php, utilisez le moteur blade ; 🎜>Ce moteur prendra l'initiative de mettre en cache. Si le fichier cache n'a pas expiré, le fichier cache sera appelé directement sinon, il sera recompilé et le fichier cache sera généré via sha1 (situé dans le stockage/framework/. répertoire de vues) (en bas) ;
ob_start();
include $__path;
ob_get_clean();
Copier après la connexion


Compilation du moteur Blade

Le moteur Blade compile les fichiers via un grand nombre de mise en œuvre de correspondance régulière et de remplacement ;

Pendant le processus d'analyse, Blade utilisera d'abord la fonction token_get_all pour obtenir le code HTML (T_INLINE_HTML) dans le fichier de vue considéré. par la partie interpréteur PHP, puis effectuez le remplacement régulier des parties Commentaires, Extensions, Déclarations et Echos dans l'ordre


Partie Commentaire
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);
  }
 }
}
Copier après la connexion

Le code principal ; est le suivant, remplacez le symbole de commentaire "{{ -- --}}" le code enveloppé est remplacé par une chaîne vide

Partie d'extension ;

preg_replace("/{{--(.*?)--}}/s", '', $value);
Copier après la connexion

Ajoutez une fonction de rappel de traitement personnalisée à BladeCompiler via la méthode extend et effectuez une correspondance et un remplacement de texte personnalisés sur le contenu du modèle
Le code principal se trouve dans IlluminateViewBladeCompiler ; fichier, comme suit :

Remplacement des instructions

// 自定义的文本替换扩展 数组
protected $extensions = [];

protected function compileExtensions($value) {
 foreach ($this->extensions as $compiler) {
  $value = call_user_func($compiler, $value, $this);
 }
 
 return $value;
}
Copier après la connexion

Cette partie est destinée à remplacer le texte des instructions qui viennent avec le framework comme @if et les instructions enregistrées via la méthode directive ; Les instructions fournies par le framework comportent les dix parties suivantes :

ViewCompilersConcernsCompilesAuthorizations : Permission vérifier

Les commandes incluent : @can, @cannot, @elsecan, @elsecannot, @endcan, @endcannot

  • ConcernsCompilesComponents : liés aux composants et aux emplacements
    Les instructions incluent : @component, @endcomponent, @slot, @endslot

  • ConcernsCompilesConditionals : liés aux déclarations de jugement
    Les instructions incluent : @if, @unless, @else, @elseif, @endif, @endunless, @isset, @endisset, @hassection

  • ConcernsCompilesIncludes : fichier intégré
    Les instructions incluent : @each, @include, @includeif, @includewhen

  • ConcernsCompilesInjections : Service Injection
    Les instructions incluent : @inject

  • ConcernsCompilesLayouts : lié à la mise en page
    Les instructions incluent : @extends, @section, @parent, @yield, @show, @append, @overwrite, @stop, @endsection

  • ConcernsCompilesLoops : liées aux boucles
    Les instructions incluent : @forelse, @empty, @endforelse, @endempty, @for, @foreach, @break, @continue, @endfor, @endforeach, @while, @endwhile

  • ConcernsCompilesRawPhp : lié aux instructions PHP natives
    Les commandes incluent : @php, @endphp, @unset

  • ConcernsCompilesStacks : liés à la pile
    Les commandes incluent : @stack, @push, @endpush, @prepend, @endprepend

  • ConcernsCompilesTranslations : liées à la traduction de localisation
    Les instructions incluent : @lang, @endlang, @choice


  • Echo remplace

la sortie d'écho est pour { !!} , {{ }}, {{{ }}} pour un remplacement régulier

{ !!} génère des caractères non échappés, utilisés pour afficher la valeur des balises HTML natives

 ;

  • {{ }} génère normalement et prend en charge le remplacement de l'opérateur ternaire ;

  • {{{ }}} génère des caractères d'échappement et prend en charge le remplacement de l'opérateur ternaire

  • Le remplacement de l'opérateur ternaire fait référence à : {{ $a ?: "Valeur par défaut" }} (ou {{$a ou "Valeur par défaut"}}) Le remplacement devient {{ isset($ a) ? $a : "Valeur par défaut"}}

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration de ce site Web
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

    Outils d'IA chauds

    Undresser.AI Undress

    Undresser.AI Undress

    Application basée sur l'IA pour créer des photos de nu réalistes

    AI Clothes Remover

    AI Clothes Remover

    Outil d'IA en ligne pour supprimer les vêtements des photos.

    Undress AI Tool

    Undress AI Tool

    Images de déshabillage gratuites

    Clothoff.io

    Clothoff.io

    Dissolvant de vêtements AI

    AI Hentai Generator

    AI Hentai Generator

    Générez AI Hentai gratuitement.

    Article chaud

    R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
    3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Meilleurs paramètres graphiques
    3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Comment réparer l'audio si vous n'entendez personne
    3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: Comment déverrouiller tout dans Myrise
    4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

    Outils chauds

    Bloc-notes++7.3.1

    Bloc-notes++7.3.1

    Éditeur de code facile à utiliser et gratuit

    SublimeText3 version chinoise

    SublimeText3 version chinoise

    Version chinoise, très simple à utiliser

    Envoyer Studio 13.0.1

    Envoyer Studio 13.0.1

    Puissant environnement de développement intégré PHP

    Dreamweaver CS6

    Dreamweaver CS6

    Outils de développement Web visuel

    SublimeText3 version Mac

    SublimeText3 version Mac

    Logiciel d'édition de code au niveau de Dieu (SublimeText3)

    Comparaison des dernières versions de Laravel et CodeIgniter Comparaison des dernières versions de Laravel et CodeIgniter Jun 05, 2024 pm 05:29 PM

    Les dernières versions de Laravel 9 et CodeIgniter 4 fournissent des fonctionnalités et des améliorations mises à jour. Laravel9 adopte l'architecture MVC et fournit des fonctions telles que la migration de bases de données, l'authentification et le moteur de modèles. CodeIgniter4 utilise l'architecture HMVC pour fournir le routage, l'ORM et la mise en cache. En termes de performances, le modèle de conception basé sur le fournisseur de services de Laravel9 et le framework léger de CodeIgniter4 lui confèrent d'excellentes performances. Dans les applications pratiques, Laravel9 convient aux projets complexes qui nécessitent de la flexibilité et des fonctions puissantes, tandis que CodeIgniter4 convient au développement rapide et aux petites applications.

    Comment les capacités de traitement des données de Laravel et de CodeIgniter se comparent-elles ? Comment les capacités de traitement des données de Laravel et de CodeIgniter se comparent-elles ? Jun 01, 2024 pm 01:34 PM

    Comparez les capacités de traitement des données de Laravel et CodeIgniter : ORM : Laravel utilise EloquentORM, qui fournit un mappage relationnel classe-objet, tandis que CodeIgniter utilise ActiveRecord pour représenter le modèle de base de données en tant que sous-classe de classes PHP. Générateur de requêtes : Laravel dispose d'une API de requêtes chaînées flexible, tandis que le générateur de requêtes de CodeIgniter est plus simple et basé sur des tableaux. Validation des données : Laravel fournit une classe Validator qui prend en charge les règles de validation personnalisées, tandis que CodeIgniter a moins de fonctions de validation intégrées et nécessite un codage manuel des règles personnalisées. Cas pratique : l'exemple d'enregistrement d'utilisateur montre Lar

    Laravel - Commandes artisanales Laravel - Commandes artisanales Aug 27, 2024 am 10:51 AM

    Laravel - Artisan Commands - Laravel 5.7 est livré avec une nouvelle façon de traiter et de tester de nouvelles commandes. Il inclut une nouvelle fonctionnalité de test des commandes artisanales et la démonstration est mentionnée ci-dessous ?

    Lequel est le plus adapté aux débutants, Laravel ou CodeIgniter ? Lequel est le plus adapté aux débutants, Laravel ou CodeIgniter ? Jun 05, 2024 pm 07:50 PM

    Pour les débutants, CodeIgniter a une courbe d'apprentissage plus douce et moins de fonctionnalités, mais couvre les besoins de base. Laravel offre un ensemble de fonctionnalités plus large mais a une courbe d'apprentissage légèrement plus raide. En termes de performances, Laravel et CodeIgniter fonctionnent bien. Laravel dispose d'une documentation plus complète et d'un support communautaire actif, tandis que CodeIgniter est plus simple, léger et possède de solides fonctionnalités de sécurité. Dans le cas pratique de la création d'une application de blog, EloquentORM de Laravel simplifie la manipulation des données, tandis que CodeIgniter nécessite une configuration plus manuelle.

    Laravel vs CodeIgniter : quel framework est le meilleur pour les grands projets ? Laravel vs CodeIgniter : quel framework est le meilleur pour les grands projets ? Jun 04, 2024 am 09:09 AM

    Lors du choix d'un framework pour de grands projets, Laravel et CodeIgniter ont chacun leurs propres avantages. Laravel est conçu pour les applications d'entreprise, offrant une conception modulaire, une injection de dépendances et un ensemble de fonctionnalités puissantes. CodeIgniter est un framework léger plus adapté aux projets de petite et moyenne taille, mettant l'accent sur la rapidité et la facilité d'utilisation. Pour les grands projets avec des exigences complexes et un grand nombre d'utilisateurs, la puissance et l'évolutivité de Laravel sont plus adaptées. Pour les projets simples ou les situations avec des ressources limitées, les capacités de développement légères et rapides de CodeIgniter sont plus idéales.

    Questions et réponses sur la conception de l'architecture de microservices d'applications d'entreprise PHP Questions et réponses sur la conception de l'architecture de microservices d'applications d'entreprise PHP May 07, 2024 am 09:36 AM

    L'architecture des microservices utilise des frameworks PHP (tels que Symfony et Laravel) pour implémenter des microservices et suit les principes RESTful et les formats de données standard pour concevoir des API. Les microservices communiquent via des files d'attente de messages, des requêtes HTTP ou gRPC et utilisent des outils tels que Prometheus et ELKStack pour la surveillance et le dépannage.

    Laravel vs CodeIgniter : quel framework est le meilleur pour les petits projets ? Laravel vs CodeIgniter : quel framework est le meilleur pour les petits projets ? Jun 04, 2024 pm 05:29 PM

    Pour les petits projets, Laravel convient aux projets plus importants qui nécessitent des fonctionnalités et une sécurité élevées. CodeIgniter convient aux très petits projets qui nécessitent légèreté et facilité d'utilisation.

    Quel est le meilleur moteur de template, Laravel ou CodeIgniter ? Quel est le meilleur moteur de template, Laravel ou CodeIgniter ? Jun 03, 2024 am 11:30 AM

    En comparant le moteur de modèles Blade de Laravel et le moteur de modèles Twig de CodeIgniter, choisissez en fonction des besoins du projet et de vos préférences personnelles : Blade est basé sur la syntaxe MVC, qui encourage une bonne organisation du code et un héritage de modèles. Twig est une bibliothèque tierce qui offre une syntaxe flexible, des filtres puissants, une prise en charge étendue et un bac à sable de sécurité.

    See all articles