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
Le processus approximatif de présentation visuelle :
1 , démarrez le rendu de la vue en appelant la méthode view()
(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();
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 ;
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); } } }
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);
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; }
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 :
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 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
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!