
批改狀態(tài):合格
老師批語:
<?php
// 視圖類
namespace phpcn;
class view
{
//約定:控制器方法的模板,就是以控制器為目錄名,以方法為文件名
protected $controller;
protected $action;
protected $path;
// 模板變量容器
protected $data = [];
// 初始化時創(chuàng)建模板的路徑
public function __construct($controller,$action,$path = '/view/')
{
$this->controller = $controller;
$this->action = $action;
$this->path = $path;
}
// 模板賦值:用assign()方法
// assign()方法:在thinkphp中,assign()方法用于打印數(shù)組,該方法的第一個參數(shù)是在模板取值時所使用
// 的變量名,第二個參數(shù)是要傳遞的值,語法為“$this->assign('name',$value);”。
public function assign($name,$value)
{
// $name 是外部變量在模板文件中的變量
// $value 是模板變量的值
$this->data[$name] = $value;
}
// 模板渲染:一般用render()方法
// 將模板賦值與模板渲染二合一
public function render($path = '' ,$name = null, $value = null)
{
if ($name && $value) $this->assign($name,$value);
// 展開模板變量數(shù)組
extract($this->data);
if (empty($path)) {
// 按約定規(guī)則來生成模板文件的路徑并加載它
$file = __DIR__ .$this->path . $this->controller . '/' .$this->action . '.php';
} else {
$file = $path;
}
// include $file or die('視圖不存在);
file_exists($file) ? include $file : die('視圖不存在');
}
}
// 測試
$controller = 'User';
$action = 'hello';
$view = new View($controller,$action);
// 模板賦值:變量
$view->assign('username','朱老師');
$items = [
['name' =>'手機','price' => 2000],
['name' =>'電腦','price' => 3800],
['name' =>'相機','price' => 1800],
];
$view->assign('items',$items);
// 渲染模板
// $view->render();
// 渲染,賦值二合一
$view->render($path = '','lang',['php','java','python']);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h3>User控制器的hello()方法</h3>
<h3>Hello,<?= $username ?></h3>
<ul>
<?php foreach ($items as ['name'=>$name,'price'=>$price]): ?>
<li><?= $name ?> :<?= $price ?>元</li>
<?php endforeach ?>
</ul>
<ul>
<?php foreach ($lang as $value): ?>
<li><?= $value ?></li>
<?php endforeach ?>
</ul>
</body>
</html>
運行效果:
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號