Если вы использовали язык MVC до того, как познакомились с практикой отделения бизнес-логики от HTML. В MVC-языке это работает так, что среда позволит вам назначить представление (HTML) контроллеру (классу).
Когда создается экземпляр контроллера, у него будет действие для отображения представления с HTML-кодом для страницы. В разделение входит возможность отправки переменных с вашего контроллера для использования в вашем представлении.
Laravel Framework
Примером того, как это работает на платформе Laravel, является использование метода make в классе View .
return View::make('greeting', array('name' => 'Taylor'));
Это будет отправлено в представление под названием приветствие с переменной имени, заполненной Тейлором .
<!-- View stored in app/views/greeting.php --> <html> <body> <h1>Hello, <?php echo $name; ?></h1> </body> </html>
Laravel Views
В этом уроке мы собираемся воссоздать эту функциональность и отправить переменные, которые можно использовать в файле HTML. Мы также сможем вернуть содержимое этого HTML-кода внутри переменной, чтобы вывести его в любом месте нашего приложения, которое мы хотим.
Для этого мы будем использовать функции контроллера вывода PHP .
Посмотреть файл
Типичный файл представления должен содержать только HTML-код страницы. Этот файл должен использоваться только для вывода содержимого посетителю, и в представлении не должно быть никакой логики. Вся логика в вашем приложении должна быть сделана в контроллере, и это будет отправлено на просмотр.
Ниже приведен простой пример файла представления, содержащего заголовок и содержимое страницы.
<div class="view-file"> <h1><?php echo $title; ?></h1> <p><?php echo $content; ?></p> </div>
Вызов Просмотр файла
Когда мы вызываем наш файл представления, мы сначала собираемся создать массив переменных, которые можно передать нашему представлению.
Ключ этих значений массива будет превращен в имена переменных на наш взгляд. Поскольку у нас были только переменные title и content, мы можем просто передать их в нашу функцию getView ().
Функция getView () принимает два параметра: первый будет местоположением нашего файла представления, а второй — переменные, отправляемые в файл представления.
<?php $vars = array(); $vars['title'] = 'Page Title'; $vars['content'] = 'This is an example of displaying content in the view file'; return $this->getView('view_file.php', $vars); ?>
Получить функцию просмотра
Создание метода для получения файлов представления и возврата его содержимого стало проще благодаря использованию функций управления выводом, встроенных в PHP .
Сначала мы должны убедиться, что файл представления существует. Если файл представления не существует, мы не можем продолжить работу с функцией, поэтому мы просто возвращаем false на этом этапе.
Далее мы можем взять массив переменных и использовать функцию extract () , которая превратит ключи массива в переменные.
// Extract the variables to be used by the view if(!is_null($vars)) { extract($vars); }
Нам нужно включить файл представления в скрипт, чтобы мы могли использовать эти переменные, но, поскольку мы хотим вернуть содержимое файла представления, нам нужно запретить PHP выводить содержимое файла. Для этого мы запускаем выходной буфер с помощью ob_start () .
ob_start();
После запуска выходного буфера мы включаем файл представления, что означает, что он будет иметь доступ к переменным, которые мы создали с помощью функции extract () .
include_once $viewFile;
Файл представления не является выходом, потому что мы запустили ob_start () . Чтобы получить содержимое того, что находится в буфере, нам нужно использовать другую функцию управления выводом, ob_get_contents () . Это получит то, что будет на выходе и вернет содержимое буфера вывода.
$view = ob_get_contents();
Поскольку мы собрали все выходные данные и не хотим, чтобы что-либо еще было включено в выходные данные файла представления, нам нужно остановить буфер вывода с помощью функции ob_end_clean () .
Наконец, мы можем вернуть содержимое файла представления с HTML-кодом, заполненным переменными, которые мы ему отправили.
Ниже приведен полный метод getView ().
<?php /** * Get the view file */ public function getView($viewFile, $vars = NULL) { // Check the view file exists if(!file_exists($viewFile)) { return false; } // Extract the variables to be used by the view if(!is_null($vars)) { extract($vars); } ob_start(); include_once $viewFile; $view = ob_get_contents(); ob_end_clean(); return $view; } ?>