php超实用的模板引擎
方法:
$this->assign('style',$style);//变量 $this->display();//模板 <?php /*配制*/ $config=array( /* 数据库设置 */ 'DB_TYPE' => 'mysql', // 数据库类型 'DB_HOST' => 'localhost', // 服务器地址 'DB_NAME' => 'php', // 数据库名 'DB_USER' => 'root', // 用户名 'DB_PWD' => '123', // 密码 'DB_PREFIX' => 'jiaodu_', // 数据库表前缀 'DB_CHARSET' => 'utf8', // 数据库编码默认采用utf8 /* SESSION设置 */ 'SESSION_START' => 'user', //session方式,文件方式:file, 数据库设置为user /* 模板引擎设置 */ 'TMPL_ADMIN_PATH' =>'admin',//后台目录名称 'TMPL_COMPILE_PATH' =>'/Runtime',//读写目录 'TMPL_PATH' =>'/template',//模板路径 'TMPL_TEMPLATE_SUFFIX' => 'html', // 默认模板文件后缀 'TMPL_L_DELIM' => '{', // 模板引擎普通标签开始标记 'TMPL_R_DELIM' => '}', // 模板引擎普通标签结束标记 'TMPL_STRIP_SPACE' => true, // 是否去除模板文件里面的html空格与换行 'TMPL_CACHE_ON' => true, // 是否开启模板编译缓存,设为false则每次都会重新编译,一般用于模板调试 /* URL设置 */ 'URL_HTML_SUFFIX' => 'html', // URL伪静态后缀设置 'URL_PATHINFO_MODEL' => 2, // URL模式,1不隐藏、2隐藏入口文件[需要规则支持] /*其它设置*/ 'PASS_ENCRYPT' =>'www.php.cn',//加密因子 );
[PHP]代码
<?php /** * 模板解析类 * @author 角度 QQ:1286522207 * */ class template extends Action{ private $config; private $CompileDir;//编译目录 private $templateDir;//模板目录 private $templateFile; private $debuy=1;//是否调试 private $assign;//变量 public function __construct($templateFile){ $this->config(); $this->templateFile=$templateFile; } private function config(){ global $config; $this->config=$config; $this->CompileDir=$this->config['TMPL_COMPILE_PATH'].'/Compile'; $this->templateDir=$this->config['TMPL_PATH']; $this->debuy=$this->config['TMPL_CACHE_ON']; } /** * 检查编译目录 */ public function is_CompileDir(){ $dir=APP_PATH.$this->CompileDir; if (!is_dir($dir)){ if (!mkdir($dir)){ die('编译目录自动创建失败,请手动创建'); } } if (!is_writeable($dir)){ die('编译目录没有写入权'); } } /** * 注入变量 */ public function assign($assign) { $this->assign=$assign; } /** * 输出模板 */ public function display(){ $this->is_CompileDir(); $this->CompileCheck(); } /** * 检查编译 */ private function CompileCheck(){ $this->is_CompileDir(); $filename=APP_PATH.$this->CompileDir.'/'.md5($this->templateFile).'.php'; if ($this->debuy || !is_file($filename)){ $this->tmplstrtpspace($filename); } foreach ($this->assign as $key=>$row){ $$key=$row; } include $filename; } /** * 格式化模板并写入编译 */ private function tmplstrtpspace($filename){ if ($this->config['TMPL_STRIP_SPACE']){ $find = array("~>\s+<~","~>(\s+\n|\r)~"); $replace = array("><",">"); $tmplContent = preg_replace($find, $replace,$this->templateCheck()); }else { $tmplContent = $this->templateCheck(); } if (file_put_contents($filename,trim($tmplContent))){ return true; }else { die('编译写入失败'); } } /** * 检查模板 */ private function templateCheck(){ $PATH=APP_PATH.$this->templateDir.'/'.$this->templateFile.'.html'; if (is_file($PATH)){ return $this->template_compile(file_get_contents ( $PATH )); }else { die('模板:'.$this->templateFile.'.html 不存在'); } } /** * 编译模板 */ private function template_compile($template_Conver){ if (empty($template_Conver)){ return $template_Conver; }else { $_Left= $this->config['TMPL_L_DELIM']; $_Right= $this->config['TMPL_R_DELIM']; $template_Preg [] = '/<\?(=|php|)(.+?)\?>/is'; $template_Preg [] = '/' . $_Left . '(else if|elseif) (.*?)' . $_Right . '/i'; $template_Preg [] = '/' . $_Left . 'for (.*?)' . $_Right . '/i'; $template_Preg [] = '/' . $_Left . 'while (.*?)' . $_Right . '/i'; $template_Preg [] = '/' . $_Left . '(loop|foreach) (.*?)' . $_Right . '/i'; $template_Preg [] = '/' . $_Left . 'if (.*?)' . $_Right . '/i'; $template_Preg [] = '/' . $_Left . 'else' . $_Right . '/i'; $template_Preg [] = '/' . $_Left . "(eval|_)( |[\r\n])(.*?)" . $_Right . '/is'; $template_Preg [] = '/' . $_Left . '_e (.*?)' . $_Right . '/is'; $template_Preg [] = '/' . $_Left . '_p (.*?)' . $_Right . '/i'; $template_Preg [] = '/' . $_Left . '\/(if|for|loop|foreach|eval|while)' . $_Right . '/i'; $template_Preg [] = '/' . $_Left . '((( *(\+\+|--) *)*?(([_a-zA-Z][\w]*\(.*?\))|\$((\w+)((\[|\()(\'|")?\$*\w*(\'|")?(\)|\]))*((->)?\$?(\w*)(\((\'|")?(.*?)(\'|")?\)|))){0,})( *\.?[^ \.]*? *)*?){1,})' . $_Right . '/i'; $template_Preg [] = "/( | ){0,}(\r\n){1,}\";/"; $template_Preg [] = '/' . $_Left . '(\#|\*)(.*?)(\#|\*)' . $_Right . '/'; $template_Preg [] = '/' . $_Left . '\%([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)' . $_Right . '/'; $template_Replace [] = '<?\\1\\2?>'; $template_Replace [] = '<?php }else if (\\2){ ?>'; $template_Replace [] = '<?php for (\\1) { ?>'; $template_Replace [] = '<?php while (\\1) { ?>'; $template_Replace [] = '<?php foreach ((array)\\2) { $__i++; ?>'; $template_Replace [] = '<?php if (\\1){ ?>'; $template_Replace [] = '<?php }else{ ?>'; $template_Replace [] = '<?php \\3; ?>'; $template_Replace [] = '<?php echo \\1; ?>'; $template_Replace [] = '<?php print_r(\\1); ?>'; $template_Replace [] = '<?php } ?>'; $template_Replace [] = '<?php echo \\1;?>'; $template_Replace [] = ''; $template_Replace [] = ''; $template_Replace [] = '<?php echo $this->lang_array[\'\\1\'];?>'; return preg_replace ( $template_Preg, $template_Replace, $template_Conver ); } } }

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

如果您是一位经验丰富的 PHP 开发人员,您可能会感觉您已经在那里并且已经完成了。您已经开发了大量的应用程序,调试了数百万行代码,并调整了一堆脚本来实现操作

本教程演示了如何使用PHP有效地处理XML文档。 XML(可扩展的标记语言)是一种用于人类可读性和机器解析的多功能文本标记语言。它通常用于数据存储

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

字符串是由字符组成的序列,包括字母、数字和符号。本教程将学习如何使用不同的方法在PHP中计算给定字符串中元音的数量。英语中的元音是a、e、i、o、u,它们可以是大写或小写。 什么是元音? 元音是代表特定语音的字母字符。英语中共有五个元音,包括大写和小写: a, e, i, o, u 示例 1 输入:字符串 = "Tutorialspoint" 输出:6 解释 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。总共有 6 个元

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。

PHP的魔法方法有哪些?PHP的魔法方法包括:1.\_\_construct,用于初始化对象;2.\_\_destruct,用于清理资源;3.\_\_call,处理不存在的方法调用;4.\_\_get,实现动态属性访问;5.\_\_set,实现动态属性设置。这些方法在特定情况下自动调用,提升代码的灵活性和效率。
