2015-05-27
看到这里我想再写一个helloworld的程序,不过这次的程序需要调用htm来实现,首先我们知道fatfree主要是以php为引擎的,我们定义一个template.htm文件:
Hello, !
注意,这里的name是还没初始化的变量
然后在主函数里面:
$f3=require('lib/base.php');$f3->route('GET /', function($f3) { $f3->set('name','world'); $view=new View; echo $view->render('template.htm'); // Previous two lines can be shortened to: // echo View::instance()->render('template.htm'); });$f3->run();
这里面的view是内置对象,用于调用htm文件,然后这里给name初始化了然后调用template,输出helloworld,应该没什么问题。
这里也有另外一种fatfree本身的模板,格式是:
Hello, {{ @name }}!
$f3=require('lib/base.php');$f3->route('GET /', function($f3) { $f3->set('name','world'); $template=new Template; echo $template->render('template.htm'); // Above lines can be written as: // echo Template::instance()->render('template.htm'); });$f3->run();
变动就是new的类不同和文件中变量的引用不同。
可以发现fatfree的变量都是以@符号开头的,而且框架会自动产生跟跟文件名一样的类,在这里是template,也就是文件的名字。
再举个例子,如果你定义了:
$f3->set('buddy',array('Tom','Dick','Harry'));
然后再在template里面写下:
{{ @buddy[0] }}, {{ @buddy[1] }}, and {{ @buddy[2] }}
就可以输出buddy的数组元素了,但是如果你只在文件里写 {{ @buddy }}
的话,那么因为传输进来的是一个数组,所以输出的是‘Array’这个字符串。
文件里面的调用还支持一系列的操作:
{{ 2*(@page-1) }}{{ (int)765.29+1.2e3 }}{{ var_dump(@xyz) }}That is {{ preg_match('/Yes/i',@response)?'correct':'wrong' }}!
{{ @obj->property }}
只要你源文件里面给这些变量定义完全了,这些操作都是有效的。
还有fatfree里面给函数定义是这样的:
$f3->set('func', function($a,$b) { return $a.', '.$b; });
定义完之后就可以调用了:
{{ @func('hello','world') }}
还有一招在文件里面调用另外一个文件:
如果你怕麻烦也可以用变量的形式调用,首先:
// switch content to your blog sub-template$f3->set('content','blog.htm');// in another route, switch content to the wiki sub-template$f3->set('content','wiki.htm');
然后:
而且这个include还可以设置为有条件限制的:
这里的count是计算@items数组的元素,这里就不详细说了。
注释:
A chunk of HTML we don't want displayed at the moment
还有
{* A chunk of HTML we don't want displayed at the moment
*}
都是fatfree里面的注释。
条件语句:
Inserted if condition is false Appears when condition is true Appears when condition is false
跟ifelse一样,这里就不说了,但是如果不写false那就全部默认为true:
HTML chunk to be included if condition is true
然后说一个数组输出的方法:
首先定义:
$f3->set('fruits',array('apple','orange ',' banana'));
然后文件中
{{ trim(@ifruit) }}
这样就可以出来效果:
apple
orange
banana
然后我们来个复杂的例子:
定义:
$f3->set('div', array( 'coffee'=>array('arabica','barako','liberica','kopiluwak'), 'tea'=>array('darjeeling','pekoe','samovar') ));
然后文件中:
{{ @ikey }}
{{ @ispan }}
输出:
coffee
arabica barako liberica kopiluwak
tea
darjeeling pekoe samovar
现在发现挺好用了吧,然后要说明一下,key对应的值是数组当前指针(多维才适用),value对应的值是数组的值,会根据要求罗列出来。而且如果定义的数组是多维的,例如上面那个div -> coffee -> arabica这个二维数组,repeat也要调用两次,第一次的repeat是进入coffee的第一层,然后第二次调用进入arabica这一层,key对应的就是当时的指针。
当然也可以像之前那样判断类别:
{{ trim(@fruit) }}
如果ctr是奇数就进odd类,如果是偶数就是even类
字符编码:
UTF-8:
$f3->set('ENCODING','ISO-8859-1');
email模板:
首先下面先说一下email的逻辑定义:
welcome.txt文件里面是这样的
MIME-Version: 1.0Content-type: text/html; charset={{ @ENCODING }}From: {{ @from }}To: {{ @to }}Subject: {{ @subject }}Welcome, and thanks for joining {{ @site }}!
我们的定义:
$f3->set('from','');$f3->set('to','');$f3->set('subject','Welcome');ini_set('sendmail_from',$f3->get('from'));mail( $f3->get('to'), $f3->get('subject'), Template::instance()->render('email.txt','text/html'));
这里有两个比较陌生的php函数,ini_php函数是用来修改php.ini基本配置文件的函数,但是会在脚本运行结束后恢复。而mail函数是php内置的核心函数,不需要额外安装,也就是发email的,这里是简单的使用模式,分别是接收者,主题,内容。但是要注意,发送成功不表示对方一定会接收到。
当然,上面这个代码只是给单一用户发送邮件的代码,但是我们经常要给一系列的用户发送邮件。所以就不能用这种简单的代码了。
我们可以用smtp的类来发送:教程
$mail=new SMTP('smtp.gmail.com',465,'SSL','account@gmail.com','secret');$mail->set('from','');$mail->set('to','"Slasher" ');$mail->set('subject','Welcome');$mail->send(Template::instance()->render('email.txt'));
1
CI框架连接数据库配置操作以及多数据库操作
09-05
2
asp 简单读取数据表并列出来 ASP如何快速从数据库读取大量数据
05-17
3
C语言关键字及其解释介绍 C语言32个关键字详解
04-05
4
C语言中sizeof是什么意思 c语言里sizeof怎样用法详解
04-26
5
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
04-12
6
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
09-05
7
PHP中的(++i)前缀自增 和 (i++)后缀自增
09-05
8
PHP中include和require区别之我见
09-05
常用dos命令及语法
2014-09-27
将视频设置为Android手机开机动画的教程
2014-12-11
php递归返回值的问题
2014-09-05
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
2017-05-03
java中的info是什么意思
2022-03-24
PHP 教程之如何使用BLOB存取图片信息实例
2014-09-05
IcePHP框架中的快速后台中的通用CRUD功能框架
2014-09-05
单片机编程好学吗?单片机初学者怎样看懂代码
2022-03-21
PHP数组函数array
2014-09-05
学ug编程如何快速入门?
2022-03-17
英雄联盟云顶之弈手机版本下载v14.8.5768838 安卓最新版本
策略塔防 78.2M
下载苍蓝前线手游下载v1.1.0 安卓版
策略塔防 464.3M
下载崩坏学园2手游下载v12.2.8 安卓最新版本
角色扮演 323.3M
下载彩虹联萌手游下载v7.3.23015 安卓官方版
卡牌对战 804.7M
下载花花填色苹果版下载v2.2.5 iPhone版
其它手游 174M
下载奥特曼超时空英雄官方正版下载v1.0.2 安卓版
动作闯关 1.63G
下载全民奇迹2ios版下载v15.0.0 iphone版
其它手游 3G
下载罗布乐思roblox国际服最新版官方正版下载v2.682.538 安卓版
动作闯关 131.0M
下载com.roblox.client国际服下载v2.682.538 安卓版
下载
绝地鸭卫游戏下载v0.2.3 安卓版
下载
梦幻模拟战官服下载v6.13.2110 安卓最新版
下载
天龙八部手游8868版下载v1.133.2.2 安卓版
下载
天龙八部游戏下载v1.133.2.2 安卓手机版
下载
天龙八部手游果盘端下载v1.133.2.2 安卓版
下载
海贼王燃烧意志官方版下载v3.3.0.492700 安卓正版
下载
宝宝巴士安慰小宝宝下载v9.87.00.01 安卓版
下载