命名空间namespace、smarty使用(视图分离,MVC)、smarty模板语法、smarty缓存、MVC模式
一、命名空间:namespace
命名空间 可以理解为逻辑上的使用,为了防止重名 namespace :关键字
加载:require_once();//加载一次 include_once()
申明命名空间注意:名称空间一定是在最顶部 在他上面不能有任何内容,名称空间申明不能写在类的内部
use App\Stu; 引入,导入 名称空间\引入类名 as:取别名
二、smarty使用
smarty是一个使用php写出来的模板引擎,拥有独立简单的模板语法,它实现了逻辑代码与模板的分离,把原本HTML与PHP代码混杂模板转化为smarty模板,其目的就是要使PHP程序员与前端人员分离,其简单的语法也可参与到模板套嵌的工作中,让PHP专注于后台逻辑开发。
smarty 常用属性、方法:
设置视图分离模板的路径: template_dir("视图分离模板的路径");
设置存放smarty编译文件的路径: compile_dir("存放smarty编译文件的路径");
模板加载: display("模板路径【相对路径】");
用来传递参数: assign("标签名",值);
设置单独的缓存时间: caching=2; cache_lifetime=200;//单位秒
设置两个备用属性: left_delimiter("<{") right_delimiter("}>"); 设置后模板显示<{$标签名}>
注释: {*注释内容*}
变量输出(默认,未设置备用属性) {$var}
加载模板: {include file="模板地址"}
smarty函数使用: {函数名 参数1=‘值1’ 参数2=‘值2’}
循环列表:
2版本: {foreach from $result key= k item = v}
{$v}
{/foreach}
3版本:{foreach $result $k=>$v}
{$v}
{/foreach}
变量调节器
{$v.title|truncate:10:"...":true}
{字符串|变量调节器1:参数1:参数2|变量调节器2}
if : {if $name == “sky"} {else} {/if}
保留变量 {$smarty.get.page} {$smarty.post.page} {$smarty.cookies.username} {$smarty.server.SERVER_NAME} {$smarty.session.id} {$smarty.request.username}
判断变量为空 isset,不为空返回true
缓存是指,把某项结果暂时保存起来,当再次访问该结果时,直接调用已保存起来的结果,而不需要系统重新计算,当这个结果是不变且多次访问时,能节省很多资源。在smarty中,缓存特指把编译后的模板得到的html保存起来,当用户再次访问该页面时,直接调用该html,无需smarty重新编译
判断缓存
Smarty2: $smarty-> is_cached(‘模板路径’,[缓存id])
Smarty3: $smarty-> isCached(‘模板路径’,[缓存id])
清除缓存
Smarty2:
$smarty->clear_all_cache();//清除所有缓存
$smarty->clear_cache(‘site/index.tpl’);//清除指定模板缓存
Smarty3:
$smarty->clearAllCache();//清除所有缓存
$smarty->clearCache(‘site/index.tpl’);//清除指定模板缓存
缓存id:
用与缓存指定页面,如列表页我们有翻页,但每次翻页虽然内容不同,但依旧是同一个模板,此时列表页的缓存就需要用到缓存id,例子如下
$smarty-> isCached(‘news.tpl’,1); $smarty->display(‘news.tpl’,1);
注意在加载模板时也需加入对应id
三、MVC
什么是MVC?
MVC(Model-View-Controller)是软件工程中的一种构架模式,把软件系统分为三个基本部分,模型(model)、视图(view)和控制器(controller)。
MVC模式的目的是实现一种动态的程序设计,使程序后续修改和扩展简化,并且使程序某一部分重复利用成为可能,除此之外,此模式通过复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部份分离的同时也赋予了各个基本部分应有的功能。
模型(Model)--管理数据库所有相关逻辑。模型提供了连接和操作数据库的抽象层。
控制器(Controller)--负责所有业务逻辑,比如if/else逻辑。
视图(View)--负责界面显示,如(HTML/XML/JSON)显示。
mvc目录结构文件:
cache:缓存文件
config:配置文件
controller:控制器
libs:配置文件
model:model层文件
ORG:视图模板配置文件
public:公共文件
view:视图文件
view_c:程序编译文件
程序入口文件
加载一个不存在类的的时候 自动执行 __autoload
__autoload可以递归的自动加载自定义异常类
file_exists(“文件路径”);判断文件路径是否存在
ucfirst("文件名");把“hello”首字母转换为大写
method_exists(对象,值);判断一对象中是否存在方法
命名空间namespace、smarty使用(视图分离,MVC)、smarty模板语法、smarty缓存、MVC模式的更多相关文章
- MVC架构学习之Smarty学习——病来而蔫
前两天是五一小长假,而每次假期都想着如何如何刻苦一番,往往是自作多情.. 当然这次是有小病在身,多个借口吧. 一有病就蔫的不行...要锻炼了啊,脚估计也差不多了,游泳试试吧这周. 这次学习Smarty ...
- PHP的模板引擎smarty原理是什么(整理)
PHP的模板引擎smarty原理是什么(整理) 一.总结 一句话总结:其实所有的模板引擎的工作原理是差不多的,无非就是在php程序里面用正则匹配将模板里面的标签替换为php代码从而将两者混合为一个ph ...
- XAML实例教程系列 - 命名空间(NameSpace) 三
XAML实例教程系列 - 命名空间(NameSpace) 2012-05-28 14:14 by jv9, 2205 阅读, 10 评论, 收藏, 编辑 上一篇曾提及XAML中,每个对象元素的声明是对 ...
- Atitit 深入理解命名空间namespace java c# php js
Atitit 深入理解命名空间namespace java c# php js 1.1. Namespace还是package1 1.2. import同时解决了令人头疼的include1 1.3 ...
- php模板引擎smarty
一. smarty的特点 速度:相对于其他模板引擎,速度较快 编译型:在下次访问模板时直接访问编译文件,不再进行模板重新编译 缓存技术:可以将用户最终看到的HTML文件缓存成一个静态HTML 插件技术 ...
- php中命名空间namespace和use
对于面向对象编程而言,命名空间namespace和use的概念非常重要. 1.根命名空间是反斜线 \ ,有点类似linux中的根目录 / 的那种感觉,但使用var_dump()函数打印时其实是空字符串 ...
- PHP 命名空间(namespace)
PHP 命名空间(namespace) PHP 命名空间(namespace)是在PHP 5.3中加入的,如果你学过C#和Java,那命名空间就不算什么新事物. 不过在PHP当中还是有着相当重要的意义 ...
- PHP 使用命名空间(namespace),实现自动加载
示例: #/DB/MySql.class.php也就是DB文件夹下有MySql.class.php文件 namespace DB; class MySql { public function __co ...
- PHP命名空间(Namespace)的使用详解(转)
对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结. 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只 ...
随机推荐
- (转自精通Python设计模式)Python设计模式之创建型模式——2.建造者模式
建造者模式将一个复杂对象的构造过程与其表现分离,这样,同一个构造过程可用于创建多个不同的表现. 我们来看个实际的例子,假设我们想要创建一个HMTL页面生成器,HTML页面的基本结构(构造组件)通常是一 ...
- CSS学习系列2 -- CSS中的清除浮动
CSS中有一个很常见的问题,就是元素的浮动. 那么,到底什么是元素的浮动呢,我们来看一个例子 举个例子,在一个div里面内部有浮动元素的话,这个浮动元素会让这个div的高度塌陷. .myDiv{ ba ...
- 9.利用msfvenom生成木马
这篇文章来介绍一下msf中一个生成木马的msfvenom模块. msfvenom命令行选项如下: 英文原版: 中文版: Options: -p, --payload <payload> 指 ...
- Raising Modulo Numbers(ZOJ 2150)
这题其实就是快速求一个高次幂的模. 这是题目的答案 #include<iostream> #include<cmath> using namespace std; ]; ]; ...
- C#进行Post请求(解决url过长的问题)
//实例代码: 1.post请求 private string GetImageXY(string imgbyte) { string result3 = string.Empty; try { st ...
- Struts2 源码分析-----工作原理分析
请求过程 struts2 架构图如下图所示: 依照上图,我们可以看出一个请求在struts的处理大概有如下步骤: 1.客户端初始化一个指向Servlet容器(例如Tomcat)的请求: 2.这个请求经 ...
- 51nod 1405【DFS】
思路: 对于结点 u 的子节点 v, 如果已经一直到结点 u 的答案ans[u],那么转移到对于结点 v,num[v] 为 v为根的树的结点个数,那么对于结点v的答案相对于结点u的答案来说, ans[ ...
- [Xcode 实际操作]四、常用控件-(17)为MKMapView地图上显示提示框
目录:[Swift]Xcode实际操作 本文将演示当点击地图上的标注圆点时,弹出信息窗口. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit ...
- 动手写一个简单版的谷歌TPU-矩阵乘法和卷积
谷歌TPU是一个设计良好的矩阵计算加速单元,可以很好的加速神经网络的计算.本系列文章将利用公开的TPU V1相关资料,对其进行一定的简化.推测和修改,来实际编写一个简单版本的谷歌TPU.计划实现到行为 ...
- angularJs中对时间戳的处理
一. ng表达式 <!-- 表达式中使用 --> {{ dt1 | date:'yyyy-MM-dd HH:mm:ss' }} 二. 控制器中使用 //controller必须注入 $fi ...