php模板原理讲解

代码如下:

$data = array(
        'title'=>'ilsea',
        'list'=>array(
                'hello',
                'world'
            )
    );

include('show.php');

// show.php 模板文件
<div>
    <?php
    echo $data['title'];
    echo '<br/>';
    print_r($data['list']);
    ?>
</div>

定义一个函数用来包含模板,并传递数据


代码如下:

// 定义一个函数用来包含模板,并传递数据,应该定义在公用函数库里的,这里我就直接写在这儿了
function template($template,$data)
{
    if(isset($data)){
        foreach($data as $key=>$val){
            $$key = $val;
        }
        unset($data);
    }
    include($template);
}

template('show.php',$data);

此例当然不是完整的写法,仅仅是一个小小的示例,模板赋值的原理就是这样的。

(0)

相关推荐

  • PHP 基于Yii框架中使用smarty模板的方法详解

    第一种方法按照YII系统的办法生成视图觉得有点麻烦,觉得用smarty更省事.尝试着把smarty模板加进来了. 复制代码 代码如下: date_default_timezone_set("PRC");class PlaceController extends CController {protected $_smarty;function __construct(){parent::__construct('place');//需要一个参数来调用父类的构造函数,该参数为控制器ID$p

  • TMDPHP 模板引擎使用教程

    在PHP界谈模板引擎,必不可免的要拿Smarty开刀, 这个无比傻帽的却又带有一点点官方色彩的模板引擎, 如果没有我这样人富有正义感又富有创新精神的热血青年站出来, 不知道它还要继续毒害多少那些处于花季而又对PHP充满美丽幻想的少年. 1.语法 你真的认为美工学的了 {foreach key=key item=item from=$contact} 这样的语法 却学不了 <?php foreach ($contact as $key=>$item) { ?> 吗? 而 {if $name

  • thinkPHP的Html模板标签使用方法

    注意:在使用如<html:select />等标签之前,必须要引入TP的标签库:<tagLib name="html" /> 如果我们现在需要一个select下拉菜单项,那么在ThinkPHP中我们可以这样做. 1.在Action控制器的方法中获取数据,举例如下: 复制代码 代码如下: public function mylist(){ $user = new Model('User'); $list = $user->getField('id,usern

  • php模板函数 正则实现代码

    我看过phpcms.discuz的源码,所以可能就缺乏创新了,不过原理大都相通,只是细节处理可能稍微不同. 说正题,下面开始谈谈具体实现过程了. 1.首先要想好模板文件放在哪?转换后的php文件放哪?还有怎么命名?直接上源码: 复制代码 代码如下: function template($tpl = 'index',$dir = 'hello') { if(!file_exists($pd = TPL_PATH.$dir.'/'))@mkdir($pd,0777) or die("$pd目录创建失

  • PHP原生模板引擎 最简单的模板引擎

    复制代码 代码如下: <?php $a = array( 'a','b','c' ); require 'template/demo.php';//引用模板 ?> 模板文件: 复制代码 代码如下: <!DOCTYPE html> <html lang="zh"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-

  • 关于PHP模板Smarty的初级使用方法以及心得分享

    至于怎么配置,这里就不用多说了,网上一大堆.1.基本上要用到的最主要的方法就是assign和display方法.2.基本上在页面上要用到的知识就是if和foreach和section这三个.3.基本上最难的就是foreach和section.4.初学的时候老是循环不出自己想要的数据.因为感觉还是跟php啊java啊这些的foreach和for都有些差别的.很难抓住他的活动路径,很难调试他的数据.5.所以这里,我把一点点经念放出来:如果数据是这样: 复制代码 代码如下: array(0=>arra

  • CodeIgniter使用phpcms模板引擎

    CodeIgniter很适合小站点应用开发,但是它自带的view功能可能会给不懂PHP的前端人员带来麻烦. 相比之下phpcms的view模板解析就强大多了,所以这里就把PHPCMS的模板解析功能剥离出来,加到PHPCMS上.首先在CodeIgniter libraries中 增加 template_cache.php 复制代码 代码如下: <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); /** *

  • thinkphp3.0 模板中函数的使用

    变量的来源: 1 从php分配的变量,使用assign分配 2 系统变量 3 路径替换变量 不能使用函数的变量 变量输出快捷标签 {@var}//输出Session变量 和{$Think.session.var}等效 {#var}//输出Cookie变量 和{$Think.cookie.var}等效 {&var}//输出配置参数 和{$Think.config.var}等效 {%var}//输出语言变量 和{$Think.lang.var}等效 {.var}//输出Get变量 和{$Think.

  • Thinkphp模板中使用自定义函数的方法

    注意:自定义函数要放在项目应用目录/common/common.php中. 这里是关键. 模板变量的函数调用格式:{$varname|function1|function2=arg1,arg2,### } 说明: { 和 $ 符号之间不能有空格,后面参数的空格就没有问题: ###表示模板变量本身的参数位置 : 支持多个函数,函数之间支持空格 : 支持函数屏蔽功能,在配置文件中可以配置禁止使用的函数列表 : 支持变量缓存功能,重复变量字串不多次解析. 使用例子: {$webTitle|md5|st

  • php模板原理讲解

    复制代码 代码如下: $data = array(        'title'=>'ilsea',        'list'=>array(                'hello',                'world'            )    ); include('show.php'); // show.php 模板文件<div>    <?php    echo $data['title'];    echo '<br/>';   

  • Spring的连接数据库以及JDBC模板(实例讲解)

    前言 今天介绍的是关于Spring的数据库连接以及Jdbc模板的相关API方法,虽然在学习了hibernate之后,会知道实现数据库连接一般都是使用hibernate等持久化框架来实现的.但是,很多时候一些涉及到事务的东西使用这些框架并不能够实现,所以我们还需要结合spring来实现相关的需要. 一.创建工程.导包 要想使用Spring的jdbc模板前,还需要导入相关的jar包: 二.进行相关的bean的创建以及工具类的编写 2.1在数据库中创建了两张表,使用spring的jdbcTemplat

  • jquery tmpl模板(实例讲解)

    之前用模板渲染都是用angular,无意间发现了jquery tmpl这种轻量级,其文档在这里 官方解释对该插件的说明:将匹配的第一个元素作为模板,render指定的数据,签名如下: .tmpl([data,][options]) 其中参数data的用途很明显:用于render的数据,可以是任意js类型,包括数组和对象.options一般情况下都是选项了,官方指出,此处的options是一个用户自定义的键值对的map,继承自tmplItem数据结构,适用于模板render动作期间. 在这里可以下

  • Python NumPy灰度图像的压缩原理讲解

    灰度图像是对图像的颜色进行变换,如果要对图像进行压缩该怎么处理呢? 1.矩阵运算中有一个概念叫做奇异值和特征值. 设A为n阶矩阵,若存在常数λ及n维非零向量x,使得Ax=λx,则称λ是矩阵A的特征值,x是A属于特征值λ的特征向量. 一个矩阵的一组特征向量是一组正交向量. 2.即特征向量被施以线性变换 A 只会使向量伸长或缩短而其方向不被改变. 特征分解(Eigendecomposition),又称谱分解(Spectral decomposition)是将矩阵分解为由其特征值和特征向量表示的矩阵之

  • redux工作原理讲解及使用方法

    目录 1. redux 是什么? 2.redux的原理 3. 如何使用 redux? (1).安装redux,创建redux文件夹,建立store.js (2).建立reducers.js (3).引入store.subscribe (4). 引入react-redux 1. redux 是什么? React 只是 DOM 的一个抽象层,并不是 Web 应用的完整解决方案.react只是一个轻量级的视图层框架,如果要做大型应用就要搭配视图层框架redux一起使用.主要引用于多交互.多数据源的场景

  • Go select使用与底层原理讲解

    目录 1. select的使用 2. 底层原理 3. 数据结构 4. 几种常见 case case 1 case2 case3 case4 1. select的使用 select 是 Go 提供的 IO 多路复用机制,可以用多个 case 同时监听多个 channl 的读写状态: case: 可以监听 channl 的读写信号 default:声明默认操作,有该字段的 select 不会阻塞 select { case chan <-: // TODO case <- chan: // TOD

  • MySql InnoDB存储引擎之Buffer Pool运行原理讲解

    目录 1. 前言 2. Buffer Pool 2.1 Buffer Pool结构 2.2 Free链表 2.3 缓冲页哈希表 2.4 Flush链表 2.5 LRU链表 2.6 多个实例 2.7 Buffer Pool状态信息 3. 总结 1. 前言 我们已经知道,对于InnoDB存储引擎而言,页是磁盘和内存交互的基本单位.哪怕你要读取一条记录,InnoDB也会将整个索引页加载到内存.哪怕你只改了1个字节的数据,该索引页就是脏页了,整个索引页都要刷新到磁盘.InnoDB是基于磁盘的存储引擎,如

  • JS事件循环-微任务-宏任务(原理讲解+面试题分析)

    目录 前言 浏览器的事件循环 浏览器的事件循环 浏览器的宏任务.微任务 面试题一 面试题二 node的事件循环 node的事件循环 node的宏任务.微任务 面试题一 前言 JS代码在运行时,有两种运行环境. 一是在浏览器中,二是在node中. 由于JS线程是单线程,在运行JS代码时,可能会遇到比较耗时的操作,比如setTimeout,或者是发送网络请求等,又由于JS线程是单线程,如果在解析耗时的代码时候,停在了这里,那执行代码的性能将是比较低的. 为了解决此问题,在浏览器.node环境下,其实

  • python破解WiFi教程代码,Python蹭网原理讲解

    目录 一.安装pywifi 二.构建wifi密码字典 三.python实现wifi破解 用Python生成一个简单的密码本,一般是有数字.字母和符号组成,这里用到的思路主要是穷举法.通过使用pywifi 模块,根据密码本暴力破解WiFi. 声明:本文只是从技术的角度来阐述学习Pywifi库!并不建议大家做任何破坏性的操作和任何不当的行为! 一.安装pywifi pywifi是在python中一个用于操作无线接口的模块,可以跨平台使用,Windows和Linux都支持 在notebook或者pyc

  • cv2.getStructuringElement()函数及开、闭、腐蚀、膨胀原理讲解

    cv2.getStructuringElement()函数的作用是返回一个结构元素(卷积核),具体解析如下: kernel = cv2.getStructuringElement(a,b,c): # 得到一个结构元素(卷积核).主要用于后续的腐蚀.膨胀.开.闭等运算.因为这些运算都是依赖于卷积核的,不同的卷积核(形状.大小)对图形的腐蚀.膨胀操作效果不一样 输入参数:         a设定卷积核的形状.b设定卷积核的大小.c表示描点的位置,一般 c = 1,表示描点位于中心.(下文细说)返回值

随机推荐