gpt4 book ai didi

php - 使用纯 PHP 的模板继承

转载 作者:行者123 更新时间:2023-12-05 07:47:03 25 4
gpt4 key购买 nike

我正在构建一个小型 MVC 应用程序,我想提供从基本(即父)模板继承的网页。所以,我创建了一个 View.php 类来初始化模板:

<?php

class View {

protected $path = $_SERVER['DOCUMENT_ROOT'] . "views/";

protected $data;

public function __construct() { $this->data = array(); }

public function render($view) {
if ( file_exists($this->path.$view) )
include $this->path.$view;
}

public function __set($name, $value) { $this->data[$name] = $value; }

public function __get($name) { return $this->data[$name]; }
}

要加载独立模板,我可以从 routes.php 执行以下操作:

$v = new View();
$v->people = ["josh", "alex", "michel"];
$v->render('welcome.php');

welcome.php 本身将是:

<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
<?php print_r($this->people) ?>
</body>
</html>

问题

这适用于独立网页。我想做的是实现模板继承(就像在 Twig 或 Blade 中一样),以便 welcome.php 可以继承自 app.php .这是我的设想:

app.php(父级)

<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
<header>...</header>
<?php ***include('content')*** ?>
<footer>...</footer>
</body>
</html>

welcome.php(子)

<?php ***extends('app.php')*** ?>

<?php ***block('content')*** ?>
<h1>You made it to welcome.php!</h1>
<?php ***END block('content')*** ?>

我该怎么做?

最佳答案

很快:您不能仅通过包含 php 文件来做到这一点。

为了支持您必须解析模板,构建模板结构。查找所有控制 block 并逐条执行。

一旦有了模板结构,就可以很容易地覆盖模板的任何部分。

关于php - 使用纯 PHP 的模板继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40144432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com