MVC架构学习之Smarty学习——病来而蔫
前两天是五一小长假,而每次假期都想着如何如何刻苦一番,往往是自作多情。。
当然这次是有小病在身,多个借口吧。
一有病就蔫的不行。。。要锻炼了啊,脚估计也差不多了,游泳试试吧这周。
这次学习Smarty引擎。
一、视图引擎简介
帮助用户实现MVC中View的开发。
(可以理解为View的模板
--好的视图引擎
贴近html;
语法简单易懂;
良好的缓存机制;
拓展性良好;
网络资源多
(所以先学习已有的视图引擎)
--知名的
Smarty,PHPLIB
二、Smarty简介
提供了逻辑和外在内容的分离(PHP程序员和美工工作的分离;
然后直接官网或者github下载就好;
其中,demo就是官方给的例子,据说挺不错的;
libs里面是我们要引入的文件,如下:
Smarty.class.php就是实例化要用到的;plugins是插件,可以自己写写放进来用;
三、Smarty的引入、配置与实例制作
1、引入与实例化
首先,还是我个人的环境,前面说过:PHP5.4(忘记了)+Zend+wampserver
创建项目,把demo和libs的东西都放进来
然后在index.php中进行代码编写;
参考Smarty.class.php的代码规范,我写了个人的表头
<?php
/**
* Project: MVCSmartyTry
* File: index.php
*
* This file is the test file of using Smarty.
*
* @copyright Andy Liang
* @author Andy Liang
* @package Smarty
* @version 3.1.30-dev
*/
然后就是简单的引入和实例化
namespace MVCSmarty\index;
/**
* Require the main file of Smarty
*/
require 'Smarty.class.php'; /**
* Instantiation of Smarty
*/
$smarty=new \Smarty();
注意,实例化的时候可以去看下.class.php中具体的类名什么的;然后require和include的选择也不再赘述,上文说过;
一般来说实例化感觉都是没有最后那个反斜杠的,可能是Zend的毛病,我再查查看吧。
2、配置相关
这个特殊的类,搞了一大堆属性和方法,网上有很多配置教程,这里提几个常用的东西;
尤其是两个方法:display和assign
/**
* Configuration of Smarty
* Especially five configs & two functions
*/
$smarty->left_delimiter = "{";
$smarty->right_delimiter = "}";
//其实看源码会发现:和源码中配置的是一样的;
//然后还有就是templates模板文件存放地址
//templates_c模板编译生成的文件
//这两个是protected或者private
//这个版本的Smarty中这些设定的修改都是有方法的
//比如setTemplateDir,好像是这个
//总之多看源码
$smarty->cache_lifetime = 120; /**
* The most frequently-used methods.
*/
$smarty->assign('articleTitle', '文章标题');
$smarty->display('./templates/test.tpl');
assign就是个赋值,但是是在模板中的赋值;
display,顾名思义就是展示了;
给你看demo
<?php
/**
* Example Application
*
* @package Example-application
*/ require '../Smarty.class.php'; $smarty = new Smarty; //$smarty->force_compile = true;
$smarty->debugging = true;
$smarty->caching = true;
$smarty->cache_lifetime = 120; $smarty->assign("Name", "Fred Irving Johnathan Bradley Peppergill", true);
$smarty->assign("FirstName", array("John", "Mary", "James", "Henry"));
$smarty->assign("LastName", array("Doe", "Smith", "Johnson", "Case"));
$smarty->assign("Class", array(array("A", "B", "C", "D"), array("E", "F", "G", "H"), array("I", "J", "K", "L"),
array("M", "N", "O", "P"))); $smarty->assign("contacts", array(array("phone" => "1", "fax" => "2", "cell" => "3"),
array("phone" => "555-4444", "fax" => "555-3333", "cell" => "760-1234"))); $smarty->assign("option_values", array("NY", "NE", "KS", "IA", "OK", "TX"));
$smarty->assign("option_output", array("New York", "Nebraska", "Kansas", "Iowa", "Oklahoma", "Texas"));
$smarty->assign("option_selected", "NE"); $smarty->display('index.tpl');
3、Demo学习
---------明天更,看bibel去了----------
MVC架构学习之Smarty学习——病来而蔫的更多相关文章
- MVC架构在Asp.net中的应用和实现
转载自:http://www.cnblogs.com/baiye7223725/archive/2007/06/07/775390.aspx 摘要:本文主要论述了MVC架构的原理.优缺点以及MVC所能 ...
- MVC架构学习
作为一名小小的GreenBird,学习MVC呢,已经花费了2天了,期间得到了美丽的学姐的帮助,初步整理了一下. 首先,学习MVC呢就先以一个标准的MVC的简单的例子来入手,然后根据学姐的PPT,我用v ...
- go区块链学习教程之iris框架mvc架构
在Iris框架中,封装了mvc包作为对mvc架构的支持,方便开发者遵循mvc的开发原则进行开发. iris框架支持请求数据.模型.持久数据分层处理,并支持各层级模块代码绑定执行. MVC即:model ...
- ExtJS 4.2.1学习笔记(一)——MVC架构与布局
1 ExtJS入门 1.1 支持所有主流浏览器 调试推荐:chrome.Safari.Firefox 1.2 推荐目录结构 - appname (包含所有程序代码,是根目录 ...
- 设计模式之美学习(九):业务开发常用的基于贫血模型的MVC架构违背OOP吗?
我们都知道,很多业务系统都是基于 MVC 三层架构来开发的.实际上,更确切点讲,这是一种基于贫血模型的 MVC 三层架构开发模式. 虽然这种开发模式已经成为标准的 Web 项目的开发模式,但它却违反了 ...
- PHP学习(MVC架构与面向对象)
想好好的学一下php中的一些面向对象的知识,以前只是为了打CTF随意的学了一下,但是为了以后的代码审计(准备PHP这边把thinkphp这个框架好好的学一下). PHP面向对象的基本知识 类与对象 类 ...
- asp.net+mvc+easyui+sqlite 简单用户系统学习之旅(一)—— 手把手教你创建第一个三层架构+mvc的asp.net项目
下面开启项目 1. 打开vs2010-文件-新建项目 2. 先创建一个空的解决方案: 选择其他项目类型-visual studio 解决方案-空白解决方案(默认.NET Framework 4),项目 ...
- MVC模式职责分工及学习路上的一些感想
在正文之前想先说说自己coding道路上的一点感想,不得不感慨一下时间过得很快,之前写过一篇关于JavaWeb_MVC模式的一篇博客,转眼之间时间已经过去了两个月,那时候还是一个刚刚接触JavaWeb ...
- Smarty学习笔记(一)
1.Smarty的配置: 将lib的内容复制到自己的工程,然后引入 实例化和配置Smarty基本属性: $smarty = new Smarty(); $smarty->left_delimit ...
随机推荐
- C# 将DataTable数据源转换成实体类
using System; using System.Collections.Generic; using System.Data; using System.Reflection; /// < ...
- 关于项目中值对象Identifier的设计-领域驱动
到现在为止做了不项目,发现每个实体都会有个相应的值对象. 先简单说一下值对象和实体之间的区别: (以下内容来着<领域驱动设计>一书) 当一个小孩画画的时候,他注意的是画笔的颜色和笔尖的粗细 ...
- 第一弹:Java 中创建对象的4种方式
Java 是面向对象的语言,不可避免的,"对象"这个概念是 Java 语言的核心部分,这里来简单讨论一下在 Java 中创建一般对象的方法. 总结下来有以下4种创建对象的方法: 使 ...
- php实现设计模式之 访问者模式
<?php /** * 访问者模式 * 封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作. * 行为类模式 */ /** 抽象访问者:抽象类或 ...
- 一起谈谈MD5加密算法
MD5是一个安全的散列算法,输入两个不同的明文不会得到相同的输出值,根据输出值,不能得到原始的明文,即其过程不可逆:所以要解密MD5没有现成的算法,只能用穷举法,把可能出现的明文,用MD5算法散列之后 ...
- logstash VS splunk
web 系统是典型的分布式部署,由此对其运行状况,硬件运转情况监控也显得尤为重要,这些监控数据表面上对业务运行没有多大的用处(属于基础数据),但正是这些基础数据形成了业务“流”.比如,用户搜索爱好,浏 ...
- html的meta总结,html标签中meta属性使用介绍
引用:http://www.haorooms.com/post/html_meta_ds 前言 meta是html语言head区的一个辅助性标签.也许你认为这些代码可有可无.其实如果你能够用好meta ...
- Microsoft Dynamics AX 7 新特性探索 - Demo 部署(Part 1)
Dynamics AX 7已经发布了一段时间了,我们知道这次微软为我们带来了许多令人激动的新特性.在这个系列里,Reinhard将揭开New Dynamics AX的神秘面纱,和大家一起探索这些新的特 ...
- 【原】iOS动态性(四):一行代码实现iOS序列化与反序列化(runtime)
为取得更好的排版效果,本文同样发布在简书上,强烈建议跳转到[1]http://www.jianshu.com/p/fed1dcb1ac9f 一.变量声明 为便于下文讨论,提前创建父类Biology以及 ...
- 深入浅出React Native 2: 我的第一个应用
这是深入浅出React Native教程的第二篇文章. 1. 环境配置 React Native环境配好之后,就可以开始创建我们的第一个App啦. 打开控制台,输入 react-native init ...