Maison  >  Article  >  développement back-end  >  Apprentissage du module Laravel View

Apprentissage du module Laravel View

不言
不言original
2018-06-13 16:34:391203parcourir

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

Vue La structure des fichiers et les fonctions du module sont présenté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


ob_start();
include $__path;
ob_get_clean();
5 S'il s'agit du suffixe blade.php, en utilisant 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 storage/framework). /views );


Compilation du moteur Blade

Le moteur Blade compile les fichiers via un grand nombre de Implémenté par correspondance et remplacement réguliers ;

Pendant le processus d'analyse, Blade utilisera d'abord la fonction token_get_all pour obtenir les jetons dans le fichier de vue qui sont pris en compte par l'interpréteur PHP est la partie HTML (T_INLINE_HTML), puis effectue le remplacement régulier des parties Commentaires, Extensions, Déclarations et Echos dans l'ordre

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);
  }
 }
}

Partie Commentaire

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


 ;

Partie d'extension

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

Ajoutez une fonction de rappel de traitement personnalisé à BladeCompiler via la méthode d'extension et effectuez une correspondance et un remplacement de texte personnalisés sur le contenu du modèle

Le code principal se trouve dans le fichier IlluminateViewBladeCompiler, comme suit :

Remplacement d'instruction

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

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

Cette partie est le framework intégré comme @if Remplacement du texte des instructions et des instructions enregistrées via la méthode directive

Les instructions fournies par le framework comportent les dix parties suivantes :
ViewCompilersConcernsCompilesAuthorizations : vérification des autorisations

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 commandes 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"}}) Remplacement par {{ isset($ a) ? $a : "Valeur par défaut"}}


    Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun. Pour plus de contenu connexe, veuillez prêter attention à. Site Web chinois PHP !

    Recommandations associées :

    Apprendre le transfert de tableaux vers des vues dans le framework Laravel 5

    Le modèle, le contrôleur et les vues du framework Laravel 5 Apprentissage des processus

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