최근에 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가 무엇을 하는지 이해하지 못한다는 점만 이해할 수 있습니다