php框架-php自己尝试写了模板引擎,最后display方法其实就是require一个html文件,为什么会输出呢?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php框架-php自己尝试写了模板引擎,最后display方法其实就是require一个html文件,为什么会输出呢?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2676字,纯文字阅读大概需要4分钟。
内容图文
![php框架-php自己尝试写了模板引擎,最后display方法其实就是require一个html文件,为什么会输出呢?](/upload/InfoBanner/zyjiaocheng/152/c9b33d3c0a5748618798974ef9244960.jpg)
这是我写的模板类:
/**
* User: 火蜥蜴制作
*/
namespace Core;
// 模板类
class Template
{
private $data = [];
private $path = ''; // 模板路径
public function __construct() {
$this->path = Config::get('project.template_path');
}
/**
* 模板赋值
* @param $key
* @param $value
*/
public function assign($key, $value) {
if(is_array($key)) {
$this->data = array_merge($this->data, $key);
} else {
$this->data[$key] = $value;
}
}
/**
* 获取路径
* @param $file
*/
private function getFilePath($file) {
$params = explode('.', $file);
// 模板路径已经加了分隔符
$path = ROOT . DIRECTORY_SEPARATOR . $this->path;
foreach ($params as $key => $param) {
if($key == count($params) - 1) {
$path .= $param;
} else {
$path .= $param . DIRECTORY_SEPARATOR;
}
}
return $path . '.html';
}
public function display($file) {
if(empty($file)) {
throw new \Exception("Template Can Not Be Empty");
}
$realPath = $this->getFilePath($file);
if(is_file($realPath)) {
extract($this->data);
require($realPath);
} else {
throw new \Exception("Template:{$realPath}
Not Found");
}
}
}
回复内容:
php require函数遇到文本就会输出吗?
这是我写的模板类:
/**
* User: 火蜥蜴制作
*/
namespace Core;
// 模板类
class Template
{
private $data = [];
private $path = ''; // 模板路径
public function __construct() {
$this->path = Config::get('project.template_path');
}
/**
* 模板赋值
* @param $key
* @param $value
*/
public function assign($key, $value) {
if(is_array($key)) {
$this->data = array_merge($this->data, $key);
} else {
$this->data[$key] = $value;
}
}
/**
* 获取路径
* @param $file
*/
private function getFilePath($file) {
$params = explode('.', $file);
// 模板路径已经加了分隔符
$path = ROOT . DIRECTORY_SEPARATOR . $this->path;
foreach ($params as $key => $param) {
if($key == count($params) - 1) {
$path .= $param;
} else {
$path .= $param . DIRECTORY_SEPARATOR;
}
}
return $path . '.html';
}
public function display($file) {
if(empty($file)) {
throw new \Exception("Template Can Not Be Empty");
}
$realPath = $this->getFilePath($file);
if(is_file($realPath)) {
extract($this->data);
require($realPath);
} else {
throw new \Exception("Template:{$realPath}
Not Found");
}
}
}
require
不是函数require
的功能是把后面的字符串作为文件名,不论文件扩展名是不是.php
,都认为那个文件是php程序,引入到当前程序中运行。php程序如果没有被
和
?>包起来,就会直接输出。
require
会把引用的文件当做PHP文件执行,不管是什么后缀名的文件(没有后缀名都可以),有的PHP木马利用这点来绕过防火墙。
PHP代码需要放在和
?>
之间才会执行。蟹妖.
当一个文件被包含时,语法解析器在目标文件的开头脱离 PHP 模式并进入 HTML 模式,到文件结尾处恢复。由于此原因,目标文件中需要作为 PHP 代码执行的任何代码都必须被包括在有效的 PHP 起始和结束标记之中。
include
或requrie
一个文件时, 文件中没有php起始标记和结束标记的位置都被当成html解析.
内容总结
以上是互联网集市为您收集整理的php框架-php自己尝试写了模板引擎,最后display方法其实就是require一个html文件,为什么会输出呢?全部内容,希望文章能够帮你解决php框架-php自己尝试写了模板引擎,最后display方法其实就是require一个html文件,为什么会输出呢?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】