mpphp / view
MPPHP 视图库。
Requires
- php: ^7.1
- mpphp/support: ~v1.0.0-alpha
This package is auto-updated.
Last update: 2024-08-29 05:00:27 UTC
README
MPPHP 视图库。
视图是包含在浏览器上打印的代码的文件。MVC 架构要求我们将业务逻辑与这些视图文件分开。传统上,初学者认为应该在表单相同的文件上调用数据库或处理表单
<?php
if (isset($_POST['submit'])) {
// Process the form...
// ...and maybe redirect to somewhere else if they succeed.
// Else display the for again
}
?>
<form method="post">
// Required inputs
<input type="submit" name="submit" value="Sign in">
</form>
这会是一个糟糕的想法,因为现在你的视图已经知道了你的后端代码。现在,大多数人会在这个时候说,他们将在不同的文件中编写逻辑,并像这样包含它
<?php include ('/form-processing.php') ?>
<form method="post">
// Required inputs
<input type="submit" name="submit" value="Sign in">
</form>
技术上,这两个版本是相同的,视图仍然知道后端逻辑。
有很多第三方模板引擎,如 Smarty、Latte、Mustache,但大多数 PHP 框架都自带自己的模板引擎,例如 Symfony 有 Twig,Laravel 有 Blade,Phalcon 有 Volt。而 MPPHP 好吧,它只有一个包含函数的单个文件,这些函数模仿了模板引擎的重要特性,如继承和分区/块,我们喜欢称之为 VIEW。
定义布局
使用模板引擎的两个主要好处是模板继承和分区。为了入门,让我们看一个简单的例子。首先,我们将检查一个“主”页面布局。由于大多数 Web 应用程序在各个页面上保持相同的一般布局,因此将此布局定义为单个 Blade 视图很方便
<!-- Stored in resources/views/layouts/app.phtml -->
<html>
<head>
<title>App Name - <?= _view__nest('title') ?></title>
</head>
<body>
<?= _view__include('sidebar') ?>
<div class="container">
<?= _view__nest('content') ?>
</div>
</body>
</html>
如你所见,这个文件包含典型的 HTML 标记。然而,请注意 _view__nest() 和 _view__include() 函数。_view__include 函数,如名称所示,包含一个模板,而 _view__nest() 函数用于显示给定分区的内容。
现在我们已经为我们的应用程序定义了布局,让我们定义一个继承布局的子页面。
扩展布局
在定义子模板时,使用 _view__extends() 函数指定子模板应该“继承”哪个布局。可以扩展布局的模板可以通过将其内容包装在与其父 _view__nest() 函数中传入的相同名称的函数中,向父模板注入内容。记住,如上例所示,这些分区的内容将在布局 _view__nest('content') 中显示
<!-- Stored in resources/views/child.phtml -->
<?php _view__extends('layouts/app') ?>
<?php function title() { ?>
Child Page
<?php } ?>
<?php function content() { ?>
<p>This is my body content.</p>
<?php } ?>
从这个部分开始,我们将讨论在视图或模板文件中使用 PHP 的最佳实践。
显示数据
要将 PHP 值显示到浏览器,我们将使用 echo
或 print
,但如果你在 PHP 开关中唯一要做的是 echo
或 print
,则可以使用简写版本,如下所示
<?= $data ?>
这比
<?php print $data ?> or <?php echo $data ?>
简单多了,不是吗?
控制结构
年轻的开发者通常会将视图与业务逻辑混合在一起,这使得前端开发者(他们对 PHP 的了解很少)无法工作,例如,可以找到以下代码的视图
<body>
<?php
foreach ($data as $info) {
$output = '<div>';
$output .= '<p>'. $info . '</p>';
$output .= '</div>;
}
echo $output;
?>
</body>
如果你和你的朋友在学校项目上工作,而且你在后端工作,我想我们都可以同意上面的内容对前端处理的人来说可能太多。一种更干净的方法是尽快从 PHP 中退出
<body>
<?php foreach ($data as $info) { ?>
<div>
<p>
<?= $info ?>
</p>
</div>
<?php } ?>
</body>
这将使任何前端人员都能够更容易地在你的项目上工作,而无需担心 PHP,我的意思是它在那里,但他们可以很容易地忽略,与上一个版本相比。
此步骤适用于控制结构和逻辑表达式。