ThinkPHP入门(二)

smarty使用

smarty引入流程

1. 控制器IndexAction.class.phpfunction index()$this -> display(); (父类Action的display)
2. 父类ThinkPHP/Lib/Core/Action.class.phpfunction display()$this->view->display
3. ThinkPHP/Lib/Core/View.class.phpfunction display()$this->fetch()function fetch()tag('view_parse',$params);ThinkPHP/Conf/tags.phpview_parse => parseTemplate(Behavior行为)
4. 行为ThinkPHP/Lib/Behavior/parseTempateBehavior.class.phpfunction run()$class = "TemplateSmarty";$tpl = new $class$tpl -> fetch()
5. TemplateSmarty.class.phpThinkPHP/Extend/Driver/Template/TemplateSmarty.class.phpfunction fetch()vendor('Smarty.Smarty#class');//ThinkPHP/Extend/Vendor/Smarty/Smarty.class.php获取真正的smartynew Smarty();C()函数会读取配置变量信息(convertion.php  config.php)

2.在config.php里边修改smarty的参数信息
3.smarty布局继承效果
布局继承 extends block

{extends file="public/layout.html"}
{block name="main"}

4.模板包含
{include file=”public/ucenterleft.html”}

5.display()显示具体模板
smarty>display();ThinkPHPthis -> display(); tp框架会自动把摸板名称给拼装好,与操作名一致
this>display();this -> display(模块/模板名); 调用其他模块下额指定模板
④ $this -> display(相对路径模板); 了解

引入机制import

include() require
通过import引入对应的类文件
import(“hello.world.apple”); hello/world/apple.class.php
1.都可以引入什么地方的类文件
a)本项目的类文件可以引入 import(“@.dir.dir.file”);
i.对应的类文件都需要创建在shop/Lib/XXX目录下边
b)ThinkPHP核心类文件可以引入 import(“think.dir.dir.file”)
i.对应类文件都设置在ThinkPHP/Lib/XXX
c)ThinkPHP/Extend 扩展库类文件可以引入 import(“ORG.dir.dir.file”);
i.对应的类文件在ThinkPHP/Extend/Library/ORG/XXX
d)特殊类引入,#号使用

登陆功能

产生验证码

 //生成验证码function verifyImg(){import("ORG.Util.Image");echo Image::buildImageVerify();}

session操作

 //持久化用户信息(id和名字)
session("mg_name",$user_info['mg_name']);
session("mg_id",$user_info['mg_id']);

分页实现

function showlist(){$goods_model = D("Goods");//1 引入分页类import("@.components.Page");//2 计算当前记录总数目$total = $goods_model -> count();$per = 5;//3. 实例化分页类对象$page = new Page($total,$per);//4. 制作一条sql语句获得每页信息$sql = "select * from sw_goods ".$page->limit;$info = $goods_model -> query($sql);//5. 获得页面列表$page_list = $page->fpage(array(3,4,5,6,7,8));$this -> assign('info',$info);$this -> assign('page_list',$page_list);$this -> display();}

缓存使用

缓存:把数据库中的信息获取出来,放到一个缓冲介质里边,在相当一段时间之内,重复的数据就去缓存里边读取。

缓存介质:内存、file文件、数据库

不同的缓存介质,操作的方式不一样

具体使用

 function s1(){//缓存设置//缓存时间默认是永久的,可以设置S("username","linken");S("age",25);S("address","北京".time(),10); //过期自动删除S("goods_info",array('one'=>'apple','two'=>'htc','three'=>'nokia'));echo "ok ,success";}function s2(){//读取缓存信息echo S('username')."<br />";echo S('age')."<br />";echo S('address')."<br />";print_r(S("goods_info"));}

缓存案例

 //获取商品信息function getInfo(){//1 首先去缓存里边获得商品信息$goods = S("info");//2. 如果缓存里边有商品信息,直接返回,//   否则去数据库获得数据,并生成缓存供下次调用if(!empty($goods)){return $goods;} else {$goods = "apple".time();  //从数据获得商品信息//再把信息放入缓存,供下次调用S("info",$goods,10);return $goods;}}

多语言设置

1.进行多语言配置config.php

 //配置多语言参数'LANG_SWITCH_ON'        => true,   // 默认关闭语言包功能'LANG_AUTO_DETECT'      => true,   // 自动侦测语言 开启多语言功能后有效'LANG_LIST'             => 'zh-cn,zh-tw,en-us', // 允许切换的语言列表 用逗号分隔'VAR_LANGUAGE'          => 'hl',        // 默认语言切换变量

2.配置行为Behavior执行

<?phpreturn array('app_begin'     =>  array(//以下行为会一次执行,自动加载机制会引入对应的文件'ReadHtmlCache','CheckLang' // 读取静态缓存),
);

3.具体语言文件设置:
4.具体语言使用
$this -> assign(‘language’,L());

自动完成

收集表单信息,把数据存入数据库
可以使用”自动完成”机制对即将入库的信息进行二次处理
例如:密码加密、用户注册时间等等。

自动完成 类似 表单验证
表单验证在create()方法内部触发
自动完成 也在create()方法内部触发

 //自动完成处理// 自动完成定义protected $_auto            =   array(//array(填充字段,填充内容,[填充条件,附加规则])array('password','md5',3,'function'),array('user_time','time',1,'function'),//array('user_time','abc',1,'callback'),//array('user_time','user_qq',1,'field'),//array('user_time','123456789',1,'string'),);

自动映射

/进行自动映射,把一个假的表单域名称 与 真实的数据表字段名称对应起来// 字段映射定义protected $_map             =   array('email' => 'user_email','qq'    => 'user_qq',);  

面向切面编程

程序开发、执行不同的环节、不同的功能利用不同的文件进行处理。
把一个大块的功能切割为小块进行开发、执行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493924.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

雁栖湖会议研讨:计算机能代替程序员吗?

来源&#xff1a;科学网写不完的代码&#xff0c;熬不完的夜&#xff0c;进度总是赶不上变化。程序开发是一项既费时费力&#xff0c;又容易出错的工作。但当前持续涌现的软件工程大数据以及快速发展的人工智能技术&#xff0c;正使得软件自动化成为可能。通过程序合成、代码补…

在 Mac OS X Lion 下修改 Hosts 的四种方法

一名刚刚使用 Mac OS X Lion 系统的朋友问我怎么该系统下修改 Hosts 文件&#xff0c;说网上搜了很多办法都不管用&#xff0c;只要编辑 Hosts 文件就出现”你不是文件 hosts 的所有者&#xff0c;因此没有权限写到该文件”的提示&#xff0c;要解决这个权限问题又比较麻烦&…

CCAI2018演讲实录 | 蒲慕明:脑科学与类脑机器学习

来源&#xff1a;人工智能前沿讲习班摘要&#xff1a;7月28-29日&#xff0c;由中国人工智能学会和深圳市罗湖区人民政府共同主办&#xff0c;马上科普承办的“2018 中国人工智能大会&#xff08;CCAI 2018&#xff09;”完美收官。大会第二天下午&#xff0c;中科院神经科学所…

Django搭建简易博客

Django简易博客&#xff0c;主要实现了以下功能 连接数据库 创建超级用户与后台管理 利用django-admin-bootstrap美化界面 template,view与动态URL 多说评论功能 Markdown与代码高亮 归档&#xff0c;AboutME和标签分类 搜索与ReadMore RSS与分页 需要添加的安装包 pip i…

HDU 4619 Warm up 2 (多校)

题意&#xff1a;在网格里面给定了 横&#xff0c;竖 两种多米诺骨牌&#xff0c;同向的不可以覆盖&#xff0c;不同向的可以覆盖&#xff0c;问你最多去掉多少个有覆盖的多米诺&#xff0c;使得网格内剩余的多米诺骨牌最多 解题思路&#xff1a; 一.搜索 &#xff08;1&…

工业智联网: 基本概念、关键技术与核心应用

来源&#xff1a;王飞跃科学网博客作者&#xff1a;王飞跃, 张军, 张俊, 王晓摘要&#xff1a;本文首先阐述了工业网联技术的演化过程&#xff0c;重点讨论了工业智联网产生的技术和时代背景.然后探讨了工业智联网的基本概念、内涵与应用领域。本文详细介绍了工业智联网的关键技…

KMP算法学习

kmp算法完成的任务是&#xff1a;给定两个字符串O和f&#xff0c;长度分别为n和m&#xff0c;判断f是否在O中出现&#xff0c;如果出现则返回出现的位置。常规方法是遍历a的每一个位置&#xff0c;然后从该位置开始和b进行匹配&#xff0c;但是这种方法的复杂度是O(nm)。kmp算法…

生命或可在星际间传播

来源&#xff1a;中国科学报去年&#xff0c;当一颗美式足球场大小的雪茄形天体Oumuamua进入太阳系时&#xff0c;它并非仅仅让人们第一次看到了一块星际岩石。根据一项新的研究&#xff0c;这也支持了太空岩石通过在遥远的恒星系统之间运送微生物&#xff0c;从而在星际间传播…

操作系统(二): 进程与线程

操作系统(二): 进程与线程 本章解读 进程管理是操作系统重点中的重点&#xff0c;涵盖了操作系统中大部分的知识和考点。其主要包括四部分&#xff1a;进程与线程&#xff0c;处理器调度&#xff0c;同步与互斥&#xff0c;死锁。所以我准备分四个部分来解释这四个模块。进程与…

Nature最新研究:超9000学者每5天发1篇论文,这些高产作家背后的科研圈

来源&#xff1a;悟空智能科技发论文发论文发论文……你有没有想过&#xff0c;假如你能够一周发一篇论文&#xff0c;这样坚持10年甚至20年&#xff0c;你能成为全球最高产的学者吗&#xff1f;答案可能吓你一跳&#xff1a;不能。不但不能&#xff0c;你甚至连全球前10000名都…

Android之WebView学习

WebView常用方法 WebSettings 在使用WebView前我们都要进行相关的配置&#xff0c;常见的操作如下&#xff1a; WebSettings settings mWebView.getSettings();settings.setJavaScriptEnabled(true); //支持javascriptsettings.setUseWideViewPort(true); //设置webv…

跌宕中,特斯拉拿下上海工厂,给蔚来们留下不到两年窗口期

来源&#xff1a;网易智能昨日&#xff0c;特斯拉上海工厂尘埃落定。特斯拉与上海规划与国土资源管理局签订协议&#xff0c;以9.73亿人民币拿下上海临港约1297.32亩地建造汽车工厂。据悉&#xff0c;这是特斯拉在美国之外设立的首个超级工厂。根据特斯拉的规划&#xff0c;上海…

2019科学突破奖揭晓 庄小威陈志坚许晨阳上榜

来源&#xff1a;科学网10月17日&#xff0c;科学突破奖&#xff08;Breakthrough Prize&#xff09;名单揭晓。总计2200万美元的奖金分别给了婴儿死亡主要遗传因素治疗、超分辨率成像、发现一种新型电子材料以及其他重大突破。华裔科学家庄小威、陈志坚、C. Frank Bennett 、A…

Android之IPC机制

Android IPC简介 任何一个操作系统都需要有相应的IPC机制&#xff0c;Linux上可以通过命名通道、共享内存、信号量等来进行进程间通信。Android系统不仅可以使用了Binder机制来实现IPC&#xff0c;还可以使用Socket实现任意两个终端之间的通信。 IPC基础概念介绍 (1)Seriali…

HTML5与原生APP之争胜负已出?

早在HTML5技术问世之时&#xff0c;有关网络应用与原生应用谁将成为移动终端霸主的问题&#xff0c;就曾引起过广泛的争论。时至今日&#xff0c;不仅关于二者孰强孰弱的争论已然平息&#xff0c;就连备受关注的移动互联网创业公司也大多是做原生APP的&#xff0c;未曾见过HTML…

5G 产业链:基站天线和小基站爆发潜力大

来源&#xff1a;国信证券5G宏基站数的翻倍增长及技术演进带来基站天线成倍增长空间。5G关键性能指标十倍的增长需要基站数翻倍增长以支撑。5G的三个关键的效率需求包括频谱利用效率、能耗效率和成本效率。具体来说&#xff0c;5G在频谱效率、能源效率和成本效率的提升需求在十…

操作系统之死锁

死锁的概念以及产生死锁的原因 一组进程中&#xff0c;每个进程都无限等待被该组进程中另一进程所占有的资源&#xff0c;因而永远无法得到的资源&#xff0c;这种现象称为进程死锁&#xff0c;这一组进程就称为死锁进程,如果死锁发生&#xff0c;会浪费大量系统资源&#xff…

2018全球最佳品牌Top25:时代巨变的一个缩影

来源&#xff1a;资本实验室10月15日&#xff0c;希尔斯控股正式向美国破产法院申请破产保护。这一消息传出&#xff0c;即引发了全球关注。作为19世纪八十年代末以邮购业务起家的零售商&#xff0c;希尔斯百货已经历一百多年的世事变化与市场风云&#xff0c;毫无疑问是美国零…

香港2013迷你制汇节即将启幕

“制汇节是一个世界的盛事。在亚洲&#xff0c;有深圳迷你制汇节和台湾迷你制汇节。在美国&#xff0c;2013年港湾地区制汇节刚刚在5月圆满举办。来自世界各地的maker展示了他们伟大的作品并分享了他们的智慧。我们相信香港也有很多maker&#xff0c;第二届香港迷你制汇节正在开…

重磅!Gartner公布2019年十大战略科技发展趋势

来源&#xff1a;网络大数据摘要&#xff1a;10月14日至18日&#xff0c;分析师在Gartner Symposium/ITxpo 2018大会探讨了在2019年企业与组织需要探索的十大战略技术趋势(Gartner Top 10 Strategic Technology Trends 2019)。Gartner将战略性技术趋势定义为具有巨大破坏性潜力…