Laravel Viewモジュールの学習

不言
不言オリジナル
2018-06-13 16:34:391208ブラウズ

この記事では、Laravel 学習チュートリアルの View モジュールに関する関連情報を、サンプル コードを通じて詳細に紹介します。これは、学習や仕事に必要なあらゆる人の参考になります。以下のエディターと一緒に学びましょう。

まえがき

この記事では主にLaravelのViewモジュールに関する関連情報を紹介し、参考や勉強のために共有します。以下の言葉 これ以上言うことはありません。詳細な紹介を見てみましょう。

この記事は、Laravel 5.4 バージョンのルーティング モジュール コードの分析と記述に基づいています。

ファイル構造

View モジュールのファイル形式と機能を次の図に示します。


#ビジュアル表示のおおよそのプロセス:

1 、 view() メソッドを呼び出してビューのプレゼンテーションを開始します。


2 まず、ビュー ファイルを見つけます。 (1) ファイル名に名前空間がある場合 (つまり、:: より前の部分)、名前空間の登録に対応するパス配列が使用され、そうでない場合はグローバル パス配列 (Illuminate の paths 変数) が使用されます。 \View\FileViewFinder クラス) が使用される;


#(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: コンポーネントとスロットに関連します

指示には以下が含まれます: @component、@endcomponent、@slot、@endslot

Concerns\CompilesConditionals: 判定ステートメントに関連します

手順には以下が含まれます: @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: スタックに関連する

    手順には以下が含まれます: @stack、@push、@endpush、@prepend、@endprepend
  • ##懸念事項\CompilesTranslations: ローカリゼーション翻訳に関連する
    手順には次のものが含まれます: @lang、@endlang、@choice


  • エコー置換

  • エコー出力は {!!} 用です。 、{{ }}、{{{ }}} は通常の置換の場合、

  • {!!} はエスケープされていない文字を出力し、ネイティブ HTML タグの値を出力します。
  • {{ }} 通常の出力、三項演算子の置換をサポートします。

  • {{{ }}} はエスケープ文字を出力し、三項演算子の置換をサポートします。

三項演算子の置換とは次のことを指します: {{ $a ?: "デフォルト値" }} (または {{$a または "デフォルト値"}}) {{ isset($) への置換a) ? $a : "デフォルト値"}}


以上がこの記事の全内容です。その他の関連内容については、こちらをご覧ください。 PHPの中国語サイトです!

関連する推奨事項:

Laravel5 フレームワークのビューへの配列の転送についての学習

Laravel 5 フレームワークのモデルとコントローラー、およびビューの基本 プロセスの学習

以上がLaravel Viewモジュールの学習の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。