Снижение производительности использования `ob_start` и` ob_get_clean` против include? - PullRequest
0 голосов
/ 02 марта 2020

Я хочу, чтобы переменные были объявлены в файле, скажем, view.php доступны в другом файле layout.php. Тем не менее, я должен включить layout.php, прежде чем включать view.php из-за структурных ограничений.

Файл view.php является представлением в структуре MVC. Таким образом, он будет содержать HTML и биты PHP для вывода переменных, создания циклов или определения переменных для файлов script и css, которые я хочу сделать доступными в файле layout.php.

Я подумываю сделать это:

ob_start();
if (!@include __DIR__ . '/view.php') {
    error('View no found');
}
$viewContent = ob_get_clean();

if(!@include __DIR__ . '/layout.php'){
    error('Layout no foun');
}

Затем вывести $viewContent внутри layout.php файла:

<html>
   <?=$styles=>;
</html>
<body>
    <h1>Layout title</h1>

    <?=$viewContent;?>
</body>

Будучи следующим:


<h2>My view here!</h2>

<?php
$styles = '<link rel="stylesheet" type="text/css" href="view.css" />'

Что должно привести к:

<html>
   <link rel="stylesheet" type="text/css" href="view.css" />
</html>
<body>
    <h1>Layout title</h1>

    <h2>My view here!</h2>
</body>
...