初探PHP模板技术

php模板技术 实例 NULL 博文链接:https://justcoding.iteye.com/blog/1013111 立即下载
学PHP之前,一直以为PHP模板是一项很高深莫测的技术。
和以往一样,为了学习它,在各大搜索引擎里搜索有关PHP模板的文章。很遗憾的是,搜索到的全是PHPLIB之类的PHP模板类的使用。

用ASP写过生成静态页面的文章系统——用户可以重新定义模板文件。这时,我在想,PHP模板会不会也是原理呢?
有一个使用PHPLIB的例子,上面有一条注释:用**变量的值替换掉模板文件中的**字符串。
可谓不谋而合!果然都是这个原理。

当初在ASP里,我将替换模板的功能写成了一个函数,并将它保存为公共的包含文件,这样,当需要替换模板时,就可以当该文件包含到当前页,然后调用该函数即可。

为什么叫“PHP模板类”?学PHP之前,我以为,“PHP模板”是PHP的一个类别。现在看来,这个认识肤浅到什么程度!现在的理解是:将模板替换封装成一个类!

由此可见,PHP模板类的原理很简单:类+模板替换。
说到替换,我第一个想到的就是正则表达式。PHP里字符替换函数大部分都是基于正则的。
所以,我个人认为,实现PHP模板类的原理是:类+正则表达式。

写了第一个PHP模板类,功能简单得不能再简单了:

cls.php -- 定义模板类
<?php
/***************
*   cls.php    *
***************/
class lly_template
{
var $template_file_name;
var $content;

function lly_template($filename = "template.html")
{
$this -> template_file_name = $filename;
}

function load()
{
$fs = fopen($this -> template_file_name,"r");
$content_ = fread($fs, filesize($this -> template_file_name));
fclose($fs);
$this -> content = $content_;
}

function repl($html_rep, $php_rep)
{
$this -> content = ereg_replace("/{".$html_rep."/}",$php_rep,$this -> content);
}
}
?>

test.php -- 调用模板类
<?php
/***************
*   test.php    *
***************/
include("cls.php");
$html = new lly_template();
$html -> load();
$html -> repl("subject","主题");
$html -> repl("content","内容");
echo $html -> content;
?>

template.html -- 模板文件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>{subject}</title>
</head>

<body>
<p>{subject}</p>
<p>{content} </p>
</body>
</html> 
PHP模板技术初探,,, PHP模板技术初探,PHP模板技术初探,PHP模板技术初探,PHP模板技术初探 立即下载

相关推荐

资金穿透分析

我们把准备好的银行数据导入到软件中,导入具体步骤这里不做详解,大家可以通过“清林情报分析师”公众号,查看操作视频第二节

清林情报分析师 3493

php ttl,ttl.php · thomasjiao/phpRedisAdmin - Gitee.com

require_once 'includes/common.inc.php';if (isset($_POST['key'], $_POST['ttl'])) {if ($_POST['ttl'] == -1) {$redis->persist($_POST['key']);} else {$redis->expire($_POST['key'], $_POST['ttl']);}he...

weixin_33065899的博客 155

Nacos漏洞利用工具V3.0.5实战:从认证绕开到内存马植入的全流程指南

本文详细解析了Nacos漏洞利用工具V3.0.5在实战中的应用,从认证绕开到内存马植入的全流程。文章深入探讨了如何利用Nacos的历史漏洞,如默认口令、认证逻辑绕过、Derby SQL注入及Jraft反序列化,实现权限提升与持久化控制,并提供了防御视角与加固建议,旨在帮助安全人员理解攻击链以加强防护。

h6j7k8l9p0的博客 484

什么是PHP中的模板技术?

PHP模板引擎的工作原理主要基于将动态内容和静态模板分离,从而提高Web开发的效率和灵活性。具体来说,模板引擎通过在模板文件中使用一系列预定义好的标签来代替原生PHP代码,这些标签在运行时会被替换为实际的数据和变量。

破损的天堂鸟博客 1263

避开这些坑!baostock获取股票数据时最容易犯的5个错误(Python实战)

本文针对使用Python和baostock库获取股票历史数据时常见的五大陷阱,提供了实战解决方案。重点剖析了登录状态验证、参数配置、数据解析、批量操作效率及数据一致性校验等关键环节,帮助开发者构建稳健高效的数据获取流程,避免因细节疏忽导致的数据错误或性能瓶颈。

websocket5live的博客 1444

Win11内核隔离无法打开的解决方案详解

内核隔离问题的解决需遵循"先硬件后软件"的排查原则,90%以上的案例可通过驱动清理或外设断开解决。对于必须禁用该功能的用户,建议定期使用Windows Defender进行全盘扫描,并保持系统更新至最新版本。技术决策需在安全性和兼容性之间取得平衡,本文提供的多维解决方案可帮助用户构建更稳定的Windows 11使用环境。

mmoo_python的博客 4831

PHP模板技术

<br />道可道,非常道—PHP模板技术 <br /><br />道可道,非常道。 <br /><br />当我第一次见到php模板的时候,简直被迷上了。原来php世界里还有这么好的东西。我疯狂地学习。 <br />好在当时的php模板还不是很庞大,很快我了解了它的原理,并也能自己写一些了。 <br />后来,smarty横空出世,更是拥有了许多为它着迷的fans.许多人开始写模板引擎,将smarty或其他模板加以改造,使之符合自己的需要。 <br />纵观当今模板世界,php模板引擎主要分为两种: <b

徐良军的专栏 908

威纶通触摸屏与S7-1200以太网通信的具体方法和步骤(非常详细)

威纶通触摸屏与S7-1200以太网通信的具体方法和步骤(非常详细)

Robot_PLC_HMI_Automation 1万+

php ttl,Beyond TTL: user-defined storage

query_is_select('DROP TABLE IF EXISTS test'): FALSEquery_is_select('CREATE TABLE test(id INT)'): FALSEquery_is_select('INSERT INTO test(id) VALUES (1), (2)'): FALSECache put/cache missquery_is_select(...

weixin_31282885的博客 146

零基础教你学RDMA驱动开发:从入门到精通--第6章 内存管理与DMA映射​6.2 DMA地址转换:内核dma_map_single()与硬件IOVA(I/O虚拟地址)​

本文深入探讨RDMA驱动中DMA地址转换机制,重点分析内核dma_map_single()函数与硬件IOVA的作用。主要内容包括:1)DMA地址转换的必要性,解决CPU虚拟地址与HCA设备DMA地址的空间割裂问题;2)内核DMA映射机制实现原理,涵盖无IOMMU(直接物理地址映射)和有IOMMU(IOVA转换)两种场景;3)硬件IOVA的工作流程及其与RDMA内存注册的结合;4)RDMA驱动开发中的关键问题,如缓存一致性、映射方向错误、IOVA泄漏等;5)以mlx5驱动为例的实践分析。文章强调DMA地址转换

xiaoheshang_123的博客 241

手把手教你学Simulink--基于新能源与储能系统的场景实例:压缩空气储能(CAES)系统热力学建模

本文介绍了使用Simulink进行压缩空气储能(CAES)系统热力学建模的详细步骤。系统模型包含压缩机、储气装置、膨胀机、热交换器和控制器等核心模块,通过MATLAB函数计算各部件参数,并设置仿真条件。文章详细说明了从模型创建到性能评估的完整流程,包括压缩/膨胀过程的能量转换、温度压力变化等关键指标分析。该建模方法可验证设计方案的有效性,并为系统优化提供参考,适用于新能源与储能领域的研究与应用。

MHD0815的博客 9196

php模板编译技术,模板预编译技术

介绍预编译 的使用场景在于,一些文本转换或格式化,通常模板固定,数据动态变化的情况。通过预编译技术,将重复使用的模板预先编译,避免了实时编译转换,以达到提升性能的目的。下文将介绍 预编译技术 的相关知识:内部原理简单实现相关实践内部原理预编译的结果,得到的是对模板进行词法分析而得到的一系列标记 (tokens)。对数据进行渲染 (执行 render 函数)时,其实是通过遍历 tokens 再组合数...

weixin_31202821的博客 249

GD32F130之USART多机通信

简介 在多机通信中,一个从机应该只接收它需要接收的数据,且只应该在它需要接收数据时才检测串口。而始终接收RX线上的数据对从机来说是一种负担。 多机通信硬件设计 远距离方案:RS485 板级方案: 静默模式 静默模式有什么作用? 答:如果 USART 处于静默模式,所有的接收状态标志位将不会被置位。 如何进入静默模式? 答:软件可以通过将 USART_CMD 寄存器中MMCMD 位置 1 使 USART 进入静默模式。 如何从静默模式中唤醒? 答:有两种方式可选,①检测到总线

luliplus的博客 302

PHP模板技术初探

 在我们使用PHP做网页的时候希望美工和程序分离出来而不是将PHP代码嵌入到HTML代码中下面结合我在网上找的一些资料(参见 http://blog.youkuaiyun.com/leedotnet/archive/2006/07/12/907895.aspx)给个代码看看我的工作添加了一个数组的模板导入函数//希望对大家有用//这里的template就相当于smart的t

我编人生不编程 822

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

linux php 进程初探

linux 进程初探定义PIDPPID拿到PID,PPID有什么用呢?马上揭晓。进程名字注意进程参数进程输入与输出 定义 根据维基百科的定义,进程(Process)是计算机中已运行程序的实体。用户下达运行程序的命令后,就会产生进程。进程需要些资源才能完成工作,如CPU使用时间、存储器、文件以及1/0设备,且为依序逐一进行,也就是每个CPU核心任何时间内仅能运行一项进程。我们简单总结下,进程就是代码运行的实体。这里补充一点,进程不一定都是正在运行的,也可能在等待调度或者停止,进程状态将在后续详细介绍。 PID

专注于php高级知识分享 1104

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

traverse+php,初探PHP-Parser和PHP代码混淆

初探PHP-ParserPHP-Parser是nikic用PHP编写的PHP5.2到PHP7.4解析器,其目的是简化静态代码分析和操作。Parsing创建一个解析器实例:use PhpParser\ParserFactory;$parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);ParserFactory接收以下几...

weixin_29156679的博客 1031

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

zabbix之php安装初探

我的系统 [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) 安装好nginx服务 [root@localhost ~]# nginx -v nginx version: nginx/1.12.2 安装好mysql:参照http://mp.blog.csdn.n

vanilla_he的博客 4415

PHP 扩展开发初探

什么是 PHP 扩展 通俗说,PHP 扩展是增强 PHP 语言功能的插件。PHP 提供了编程语言的语法,比如分支、循环、函数、类等,这些是 PHP 本身所提供的。在某些情况下需要在 PHP 语言的基础上进行扩展,那么就需要通过 PHP 底层提供的数据结构和接口来开发 PHP 扩展,从而来补充或扩展 PHP 语言,使之更加的强大。当然了,PHP 本身就已经集成了一些基本的、强大的、优秀的...

diaohuang1755的博客 156

在Android上用PHP编写应用- PFA初探

作者:蒋宇捷(hfahe)版权声明:原创作品,欢迎转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明。     概述         Android上的主要开发语言是Java,让很多PHPer觉得非常遗憾。但是自从ASE(Android Scripting Environment-Android脚本环境)诞生后,允许用户直接在Android设备上运行脚本,ASE已经支持Python

蒋宇捷的专栏 1万+

初探PHP5

 虽然 PHP5 还没有正式发布(开发版本已经提供下载),但我们现在就可以开始体验一下新的版本 将要带给我们的惊喜。在以下的介绍中,我们将重点讲述 PHP5 中的三大特色功能。这三大特点为:* 新的对象模式 (New Object Mode)* 异常处理 (Exceptions)* 名称空间 (Namespace)在开始之前,要声明两点:* 文章中的例子为了说明如何操作,有些部分使用了

冷剑魂的专栏——垃圾场 1196

php初探

写在开头,何为PHP(拍黄片)? P HP是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用(维基百科)。 从上我们得出,何为PHP? 1、开源脚本语言。 2、用于网络开发可嵌入HTML使用。 优点:请自行百度(地址:http://baike.baidu.cn/view/99.htm) IDE选择:Eclipse,记事本,PhpStorm,Vi

Carp_and_wind的专栏 1574

PHP MVC框架初探

前言 下面准备审一下Yii、laravel、tp,但这些框架都是基于MVC模式的,所以先简单了解下MVC模式。 MVC是什么 MVC(Model-View-Controller)是软件工程的一种软件架构模式。 在MVC模式设计下,软件系统被分来三个模块:模型(Model)、视图(VIew)、控制器(Controller)。 Model(模型):是应用程序中用于处理应用程序数据逻辑的部分,通常负责与数据库直接进行 curd 的交互。 View(视图):是应用程序处理数据显示的部分,通过将处理好的数据进

Sentiment的博客 1861

PHP Stream API初探

和SPL一样,在PHP手册里面,流被划为“other basic extensions”里面,是PHP开发中一个容易被忽视的函数系列。但其实在C++/Java中,流是一个很重要的概念。流的概念源于UNIX中的管道,管道是一条不间断的字节流,用来实现程序和进程间通信,或者读写外设,外部文件等。 流的概念是在php 4.3.0中被引入的。我们知道,文件操作,网络操作,数据压缩操作等具

tuantuanls的专栏 2269

PHP反序列化初探

PHP反序列化初探 php序列化是什么? 在反序列化之前,先来看看php序列化是什么样的,php序列化和反序列化由serialize()和unserialize()这两个函数进行相互转化的,简单的说就是serialize()将一串字符串、数组、对象进行格式化处理,然后再有unserialize()函数将格式化处理后的字符串、数组进行还原; 代码: <?php $str = "this ...

u011215939的博客 484
上一篇: 权限控制算法权限控制算法
下一篇: ASP.NET程序中常用代码汇总(一)
leeDotNET
博客等级 码龄20年 1粉丝 3原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值