この記事では、Laravel 学習チュートリアルの View モジュールに関する関連情報を、サンプル コードを通じて詳細に紹介します。これは、学習や仕事に必要なあらゆる人の参考になります。以下のエディターと一緒に学びましょう。
まえがき
この記事では主にLaravelのViewモジュールに関する関連情報を紹介し、参考や勉強のために共有します。以下の言葉 これ以上言うことはありません。詳細な紹介を見てみましょう。
この記事は、Laravel 5.4 バージョンのルーティング モジュール コードの分析と記述に基づいています。
ファイル構造
View モジュールのファイル形式と機能を次の図に示します。
#ビジュアル表示のおおよそのプロセス:
1 、 view() メソッドを呼び出してビューのプレゼンテーションを開始します。
#(2) 現在のパス、ファイル名、サフィックス名 (デフォルトの順序は、blade.php、php、css) を組み合わせて、ファイルが存在する;
(3) ファイルが存在しない場合は、例外を報告します。ファイルが存在する場合、対応するエンジンがサフィックス名に従って解析のために呼び出されます。 ;
3. CSS サフィックスの場合、ファイル エンジンが使用され、コア呼び出しメソッドは file_get_contents;
#4。 、php エンジンを使用します。コア呼び出しメソッドは
ob_start(); include $__path; ob_get_clean();
5 です。ブレード .php 接尾辞の場合は、ブレード エンジンを使用します。
#このエンジンはキャッシュ ファイルの有効期限が切れていない場合、キャッシュ ファイルが直接呼び出され、再コンパイルされ、キャッシュ ファイルは sha1 (次の場所にあります) を通じて生成されます。 storage /framework/views ディレクトリ);
##ブレード エンジンのコンパイル
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);
}
}
}
解析プロセス中、Blade はまず token_get_all 関数を使用して、ビュー ファイル内のトークンを取得します。 PHP インタープリター これは HTML (T_INLINE_HTML) 部分であり、コメント、拡張機能、ステートメント、エコー部分を順番に定期的に置換します。
##拡張部分
extend メソッドを通じてカスタム処理コールバック関数を BladeCompiler に追加し、テンプレート コンテンツに対してカスタム テキストの一致と置換を実行します。コア コードは、次のように Illuminate\View\BladeCompiler ファイルにあります。 ##この部分は @if のようなフレームワークを置き換えるものです。命令とディレクティブ メソッドで登録された命令のテキスト置換です。
##フレームワークによって提供される命令は次の 10 個の部分で構成されます。#View\Compilers\Concerns\CompilesAuthorizations: 権限チェック
手順には以下が含まれます: @can、@cannot、@elsecan、@elsecannot、@endcan、@endcannot
Concerns\CompilesComponents: コンポーネントとスロットに関連します
手順には以下が含まれます: @if、@unless、@else、@elseif、@endif、@endunless、@isset、@endisset、@hassection
#Concerns\Compilesincludes: 埋め込みファイル
手順には次のものが含まれます: @each、@include、@includeif、@includewhen
Concerns\CompilesInjections: サービス インジェクション
手順には次のものが含まれます: @inject Concerns\CompilesLayouts: レイアウトに関連する
手順には以下が含まれます: @extends、@section、@parent、@yield、@show、@append、@overwrite、@stop、@endsection#Concerns\CompilesLoops: ループに関連
手順には次のものが含まれます: @forelse、@empty、@endforelse、@endempty、@for、@foreach、@break、@Continue、@endfor、@endforeach、@while、@endwhile
Concerns\CompilesRawPhp: ネイティブ PHP ステートメントに関連する
コマンドには次のものが含まれます: @php、@endphp、@unset
Concerns\CompilesStacks: スタックに関連する
##懸念事項\CompilesTranslations: ローカリゼーション翻訳に関連する
手順には次のものが含まれます: @lang、@endlang、@choice
エコー置換
エコー出力は {!!} 用です。 、{{ }}、{{{ }}} は通常の置換の場合、
{{ }} 通常の出力、三項演算子の置換をサポートします。
{{{ }}} はエスケープ文字を出力し、三項演算子の置換をサポートします。
Laravel5 フレームワークのビューへの配列の転送についての学習
Laravel 5 フレームワークのモデルとコントローラー、およびビューの基本 プロセスの学習
以上がLaravel Viewモジュールの学習の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。