Дело в том, что с PHP вы можете использовать данные, собранные на стороне сервера, для создания ваших представлений, которые будут отображаться на стороне клиента.Итак, из того, что я вижу в вашем коде, вы собираете данные, которые пользователь записывает во вход на вашей веб-странице, верно?Сбор данных и функция для вычисления «timeago», как вы его называете, это половина работы!Давайте перейдем к просмотру крафта.Есть два способа сделать это:
- Сделать представления как классы.
- Сделать представления как скрипты.
Представления как классы:
Представьте, что в вашем PHP-скрипте есть алгоритм timeago, а также HTML-представление, возможно, с расширением .html.Давайте создадим представление, которое создается с параметром, который будет результатом вашей операции timeago:
<?php
class My_View{
var $timeago;
function __construct($timeago){
$this->timeago = $timeago;
$this->render();
}
function render(){
?>
<html>
<head>
<title>Timeago Example</title>
</head>
<body>
<h1>Your timeago is: <?php echo $this->timeago; ?></h1>
</body>
</html>
<?php
}
}
Просто довольно простой HTML, который создается с параметром (как говорит функция __constructor ()).Посмотрите, как я открываю тег <?php
, когда это PHP-код, и пишу чистый HTML вне этого тега после закрывающего тега PHP ?>
.Этот класс будет выводить <h1>
со значением атрибута класса $ timeago, и, поскольку это атрибут класса, вы должны ссылаться на него с помощью $this->timeago
.Ваш код будет выглядеть примерно так:
<?php
//Include your view
//Notice the .php extension!!
include __DIR__.'/../Views/My_View.php';
// Your stuff here
$timeago = ago($time); //this is your function
new My_View($timeago);
exit();
И все!Давайте теперь посмотрим, как это сделать без классов.
Представления в виде сценариев
Теперь вместо создания класса просто создайте простой сценарий, который будет использовать переменную $ timeago.Мы назовем его «my_view.php»:
<html>
<head>
<title>Timeago Example</title>
</head>
<body>
<h1>Your timeago is: <?php echo $timeago; ?></h1>
</body>
</html>
Посмотрите, как у нас есть только тег PHP с эхом $ timeago?Давайте посмотрим, как мы могли бы использовать ваш код для печати этого представления, и я объясню вам, почему он работает:
// Do not include your View here
// Your stuff here
$timeago = ago($time); //this is your function
include __DIR__.'/../Views/my_view.php';
exit();
Итак, вопрос здесь ... Если я создал скрипт с именем my_view.php, который печатает переменную $ timeago, почему он печатает ее?Этот сценарий не знает о существовании этой переменной.Это из-за ключевого слова include
.Каждый раз, когда вы include
или include_once
файла, вы как бы копируете и вставляете содержимое файла прямо в середину вашего скрипта, и знаете что ... Этот файл будет знать обо всех переменных, созданных ранее в этомтот же сценарий.
В настоящее время люди используют шаблоны для построения динамических HTML-представлений, но если вы собираетесь продолжить работу с чистым PHP, я настоятельно рекомендую использовать классы, поскольку их проще поддерживать и просто смотреть на __construct (), вы будете знать все переменные, используемые этим конкретным представлением.