>  기사  >  백엔드 개발  >  Laravel View 모듈 학습

Laravel View 모듈 학습

不言
不言원래의
2018-06-13 16:34:391195검색

이 글에서는 라라벨 학습 튜토리얼의 뷰 모듈에 대한 관련 정보를 주로 소개합니다. 뷰 모듈은 샘플 코드를 통해 아주 자세하게 소개되어 있어 공부나 업무에 필요한 모든 사람이 따라할 수 있는 학습 가치가 있습니다. 에디터와 함께 배워볼까요?

머리말

이 글은 주로 Laravel의 View 모듈에 대한 관련 정보를 소개하고 있으며 참고 및 학습을 위해 공유합니다. 아래에서는 자세한 소개를 살펴보겠습니다. .

이 글은 Laravel 5.4 버전의 라우팅 모듈 코드를 분석하고 작성한 내용을 바탕으로 작성되었습니다.

파일 구조

View 모듈의 파일 형식과 기능은 아래 그림과 같습니다.


시각적 프리젠테이션 중 대략적인 프로세스:

1. view() 메소드를 호출하여 뷰 프리젠테이션을 시작합니다.

2 먼저 뷰 파일을 찾습니다. 파일 이름에 네임스페이스(즉, :: 앞 부분)가 있으면 해당 네임스페이스에 해당하는 등록된 경로 배열을 사용하고, 그렇지 않으면 전역 경로 배열(IlluminateViewFileViewFinder 클래스의 경로 변수)을 사용하세요.

(2) 현재 경로, 파일 이름 및 접미사 이름(기본 순서는 블레이드.php, php, css)을 결합하여 파일이 존재하는지 확인합니다.


(3) 파일이 존재하지 않는 경우 예외가 보고됩니다. 해당 뷰 파일이 존재하지 않으면 해당 엔진이 접미사 이름을 기반으로 호출됩니다. 분석을 위해


3.Css 접미사인 경우, 핵심 호출 방법은


4입니다. php 접미사인 경우 php 엔진을 사용하고, 핵심 호출 방법은


ob_start();
include $__path;
ob_get_clean();


5 입니다. 블레이드 엔진

이 엔진은 캐싱 처리를 적극적으로 수행합니다. 캐시 파일이 만료되지 않은 경우 캐시 파일이 직접 호출되고, 그렇지 않으면 다시 컴파일되어 캐시 파일이 sha1(저장소/프레임워크에 있음)을 통해 생성됩니다. /views 디렉터리);


Blade 엔진 컴파일

Blade 엔진은 수많은 정기적인 일치 및 교체를 통해 파일을 컴파일합니다.

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

블레이드는 먼저 token_get_all을 사용합니다. PHP 인터프리터가 HTML(T_INLINE_HTML)로 간주하는 보기 파일 부분을 얻은 다음 주석, 확장, 명령문 및 에코 부분을 순서대로 정기적으로 교체하는 함수

Comment 부분

핵심 코드 다음과 같이 주석 기호 "{{-- --}}"로 묶인 코드를 빈 문자열로 바꿉니다. 확장 메소드를 사용하여 템플릿 콘텐츠의 사용자 정의 텍스트 일치 및 교체를 수행합니다.
핵심 코드는 다음과 같이 IlluminateViewBladeCompiler 파일에 있습니다.

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

명령 교체


이 부분은 다음과 같은 프레임워크를 교체하는 것입니다. @if that does it 제공 지침 및 지시문 메서드를 통해 등록된 지침의 텍스트 대체

프레임워크에서 제공하는 지침은 다음 10개 부분으로 구성됩니다.

ViewCompilersConcernsCompilesAuthorizations: 권한 확인

명령에는 @can, @cannot, @elsecan, @elsecannot, @endcan, @endcannot

ConcernsCompilesComponents: 구성 요소 및 슬롯과 관련됨 지침에는 다음이 포함됩니다: @comComponent, @endcomComponent, @slot, @endslot

ConcernsCompilesConditionals: 판단 진술 관련

지침에는 @if, @unless, @else, @elseif, @endif, @endunless, @isset, @endisset, @hassection

  • ConcernsCompiles포함: 내장 파일

    지침에는 다음이 포함됩니다: @each, @include, @includeif, @includewhen

  • ConcernsCompilesInjections: 서비스 주입

    명령에는 다음이 포함됩니다: @inject

  • ConcernsCompilesLayouts: 레이아웃 관련

    지침에는 @extends, @section, @parent, @yield, @show, @append, @overwrite, @stop, @endsection

  • ConcernsCompilesLoops: 루프 관련

    지침에는 다음이 포함됩니다: @forelse, @empty, @endforelse, @endempty, @for, @foreach, @break, @continue, @endfor, @endforeach, @while, @endwhile

  • ConcernsCompilesRawPhp: 기본 PHP 문과 관련됨

    명령에는 다음이 포함됩니다: @php, @endphp, @unset

  • ConcernsCompilesStacks: 스택 관련

    명령에는 @stack, @push, @endpush, @prepend, @endprepend

  • ConcernsCompilesTranslations: 현지화된 번역 관련

    지침은 다음과 같습니다: @lang, @endlang, @choice

  • Echo 교체

  • echo 출력은 {!! !!}, {{{ }}} ;


    를 정기적으로 대체합니다.
  • {!! !!}는 기본 HTML 태그의 값을 출력하는 데 사용되는 이스케이프되지 않은 문자를 출력합니다.
  • {{ }} 일반 출력, 삼항 연산자 대체 지원

  • {{{ }}} 이스케이프 문자 출력, 삼항 연산자 대체 지원: {{ $a ?: " 기본값" }} (또는 {{$a 또는 "기본값"}})을 {{ isset($a) ? $a : "기본값"}}

위로 대체 이 문서의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다. 더 많은 관련 내용을 보시려면 PHP 중국어 홈페이지를 주목해주세요!


관련 권장사항:

Laravel 5 프레임워크에서 배열을 뷰로 전송하는 방법 알아보기

Laravel 5 프레임워크의 모델과 컨트롤러 및 뷰의 기본 프로세스에 대해 알아보기


위 내용은 Laravel View 모듈 학습의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.