命名空间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中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只 ...
随机推荐
- Linux部署walle
背景:Walle 一个web部署系统工具,配置简单.功能完善.界面流畅.开箱即用!支持git.svn版本管理,支持各种web代码发布,PHP,Python,JAVA等代码的发布.回滚,可以通过web来 ...
- shell解决DOS攻击生产案例
解决DOS攻击生产案例企业实战题5:请用至少两种方法实现!写一个脚本解决DOS攻击生产案例.提示:根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封 ...
- 【总结整理】javascript的函数调用时是否加括号
javascript的函数调用时是否加括号 if(event.preventDefault){ event.preventDefault(); if判断条件里面不要加括号,不加括号是应该以属性形式,i ...
- 各版本Google浏览器下载地址
各版本谷歌浏览器下载地址 https://www.chromedownloads.net/chrome64win/
- 阶段2-新手上路\项目-移动物体监控系统\Sprint2-摄像头子系统开发\第2节-V4L2图像编程接口深度学习
参考资料: http://www.cnblogs.com/emouse/archive/2013/03/04/2943243.htmlhttp://blog.csdn.net/eastmoon5021 ...
- code first迁移和部署
从"工具"菜单中,选择"NuGet 包管理器" > "包管理器控制台". 在PM>提示符处输入以下命令: enable-migr ...
- laravel5.4 正式环境 linux 下出现undefined code
1.laravel5.4 正式环境 linux 下出现undefined code问题 报错位置在:登录模块中login 引用 报$_SESSION['code'] 中的code 并未定义 原因: ...
- PAT L2-006【二叉树中序后序构造树】
#include<bits/stdc++.h> using namespace std; typedef long long LL; struct BT{ int w; BT *L; BT ...
- c++手工扩栈
-Wl,--stack=64000000 c++手工扩展
- 译——meta viewport
此文翻译PPK大神的——meta viewport. 主要讲到了第三种viewport——ideal viewport,以及使用meta viewport 设置移动浏览器的视口. the meta v ...