>  기사  >  백엔드 개발  >  PHP에 템플릿이 도입될 때 ob 클래스 함수 사용

PHP에 템플릿이 도입될 때 ob 클래스 함수 사용

WBOY
WBOY원래의
2016-08-18 09:16:351245검색

최근에 PHP 작동 원리에 대해 배웠습니다. 일반적으로 PHP는 컨트롤러를 통해 템플릿 파일을 호출하여 페이지를 표시하는 동시에 컨트롤러의 일부 변수 값도 템플릿 파일에 할당됩니다. template.php 파일을 템플릿 파일로 사용하므로 템플릿 파일에서 PHP 구문을 직접 사용하여 컨트롤러에 할당된 변수를 표시할 수 있습니다. CI 프레임워크의 코드를 살펴보면 먼저 ob_start를 활성화한 다음 템플릿 파일 template.php를 소개하고 마지막으로 아래와 같이 ob_get_clean()을 반환합니다.

<code>ob_start();
include($_ci_path);
$buffer = ob_get_contents();
@ob_end_clean();
return $buffer;</code>

동시에 회사 내부 프레임워크의 코드 원칙은 기본적으로 동일하다는 것을 알 수 있습니다. 이제 ob 등의 일련의 기능을 사용하는 것이 무엇인지 알고 싶습니다. 할당될 수 있습니다.

답글 내용:

최근에는 PHP 작동의 몇 가지 원리에 대해 배우고 있습니다. 일반적으로 PHP는 컨트롤러를 통해 템플릿 파일을 호출하여 페이지를 표시하는 동시에 컨트롤러의 일부 변수 값도 템플릿에 할당됩니다. 저는 template.php 파일을 템플릿 파일로 사용하기 때문에 템플릿 파일에서 PHP 구문을 직접 사용하여 컨트롤러에 할당된 변수를 표시할 수 있습니다. CI 프레임워크의 코드를 살펴보면 먼저 ob_start를 활성화한 다음 템플릿 파일 template.php를 소개하고 마지막으로 아래와 같이 ob_get_clean()을 반환합니다.

<code>ob_start();
include($_ci_path);
$buffer = ob_get_contents();
@ob_end_clean();
return $buffer;</code>

동시에 회사 내부 프레임워크의 코드 원칙은 기본적으로 동일하다는 것을 알 수 있습니다. 이제 ob 등의 일련의 기능을 사용하는 것이 무엇인지 알고 싶습니다. 값을 할당할 수 있습니다.

<code>function render($template, array $var = array()) {
    extract($var);                // 提取数组中的变量(你关注的问题就在这里)
    ob_end_clean();               // 关闭顶层的输出缓冲区内容
    ob_start();                   // 开始一个新的缓冲区
    require "$template";          // 加载视图view
    $view = ob_get_contents();    // 获得缓冲区的内容
    ob_end_clean();               // 关闭缓冲区
    ob_start();                   // 开始新的缓冲区,给后面的程序用
    return $view;                 // 返回文本,此处也可以直接echo输出
}</code>

Ouba 시리즈 기능은 여전히 ​​매우 유용합니다. 컨트롤러가 뷰를 렌더링하기 위해 render를 호출하면 HTML을 정적 파일에 작성하고 캐시하거나 HTML의 일부 항목을 교체하여 출력할 수 있습니다. . 매우 편리합니다.
echo render('index.php', $data);

버퍼는 꽤 유용합니다. 예를 들어 클라이언트 정보를 저장하려는 경우 파일 헤더 정보를 보내도 header 또는 setcookie 등에 영향을 미치지 않습니다.

include가 무엇을 하는지 이해하지 못한다는 점만 이해할 수 있습니다

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