命名空间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中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只 ...
随机推荐
- java数据结构读书笔记--引论
1 递归简论 需求:求出f(x)=2f(x-1)+x²的值.满足f(0)=0 public class Recursion { // 需求: 求出f(x)=2f(x-1)+x²的值.满足f(0)=0 ...
- 记录一次坎坷的linux内网渗透过程瞎折腾的坑
版权声明:本文为博主的原创文章,未经博主同意不得转载. 写在前面 每个人都有自己的思路和技巧,以前遇到一些linux的环境.这次找来一个站点来进行内网,写下自己的想法 目标环境 1.linux 2. ...
- es6基础系列四--字符串的拓展
1 for...of 字符串的遍历接口 for(let i of "abc"){ console.log(i); } // a // b // c 2 includes 是否包含某 ...
- Go语言学习记录之一(返回指针与返回值的区别)
先来一个返回指针的测试,结果跟想象一样 type A map[int]string type B struct { A c int } func main() { b := B{make(A), 10 ...
- eigen3.3.3+opencv3.2跑orbslam3数据集出现usleep错误
cd ORB_SLAM2 chmod +x build.sh ./build.sh的时候出现错误:/home/zhao/ORB_SLAM2-master/src/System.cc:236:28: e ...
- 【mybatis-SqlSession的方法总结】
SqlSession 实例在 MyBatis 中是非常强大的一个类.SqlSession 实例中有所有执行语句的方法,提交或回滚事务,还有获取映射器实例. 在 SqlSession 类中有超过 20 ...
- C#在Linux上的开发指南(续)
续之前的一篇开发指南http://www.cnblogs.com/RainbowInTheSky/p/5496777.html 部分人在部署的时候经常出现dll兼容问题(其实可以看小蝶惊鸿的文章,蝶神 ...
- Jquery选择器(三)
过滤选择器 4.属性过滤器 查找所有含有 id 属性的 div 元素$(document).ready(function(){ $("div[id]").css("col ...
- CEPH安装教程(下)
创建 CEPH 文件系统 创建存储池 # ceph osd pool create cephfs_data 64 # ceph osd pool create cephfs_metadata 64 创 ...
- SCUT - 223 - Maya - 构造
https://scut.online/p/223 给定两个数N,M,构造M个在[0,80000]以内的互不相同的数使之异或和为N. 首先特判一下M<=2的两个简单情况,还有坑爹的-1! 然后想 ...