看到这里我想再写一个helloworld的程序,不过这次的程序需要调用htm来实现,首先我们知道fatfree主要是以php为引擎的,我们定义一个template.htm文件:
<code><p>Hello, <?php echo $name; ?>!</p></code>
然后在主函数里面:
立即学习“PHP免费学习笔记(深入)”;
<code>$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();</code>这里面的view是内置对象,用于调用htm文件,然后这里给name初始化了然后调用template,输出helloworld,应该没什么问题。
这里也有另外一种fatfree本身的模板,格式是:
<code><p>Hello, {{ @name }}!</p></code><code>$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();</code>可以发现fatfree的变量都是以@符号开头的,而且框架会自动产生跟跟文件名一样的类,在这里是template,也就是文件的名字。
再举个例子,如果你定义了:
<code>$f3->set('buddy',array('Tom','Dick','Harry'));</code>然后再在template里面写下:
<code><p>{{ @buddy[0] }}, {{ @buddy[1] }}, and {{ @buddy[2] }}</p></code>{{
@buddy }}的话,那么因为传输进来的是一个数组,所以输出的是‘Array’这个字符串。
文件里面的调用还支持一系列的操作:
<code>{{ 2*(@page-1) }}
{{ (int)765.29+1.2e3 }}
<option value="F" {{ @active?'selected="selected"':'' }}>Female</option>
{{ var_dump(@xyz) }}
<p>That is {{ preg_match('/Yes/i',@response)?'correct':'wrong' }}!</p>
{{ @obj->property }}</code>还有fatfree里面给函数定义是这样的:
<code>$f3->set('func',
function($a,$b) {
return $a.', '.$b;
}
);</code><code>{{ @func('hello','world') }}</code>还有一招在文件里面调用另外一个文件:
<code><include href="header.htm" /></code>
<code>// 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');</code><code><include href="{{ @content }}" /></code><code><include if="{{ count(@items) >= 2 }}" href="items.htm" /></code>注释:
<code><exclude>
<p>A chunk of HTML we don't want displayed at the moment</p>
</exclude></code><code>{* <p>A chunk of HTML we don't want displayed at the moment</p> *}</code>条件语句:
<code><check if="{{ @page=='Home' }}">
<false><span>Inserted if condition is false</span></false>
</check>
<check if="{{ @gender=='M' }}">
<true>
<div>Appears when condition is true</div>
</true>
<false>
<div>Appears when condition is false</div>
</false>
</check></code><code><check if="{{ @loggedin }}">
<p>HTML chunk to be included if condition is true</p>
</check></code>然后说一个数组输出的方法:
首先定义:
<code>$f3->set('fruits',array('apple','orange ',' banana'));</code><code><repeat group="{{ @fruits }}" value="{{ @ifruit }}">
<p>{{ trim(@ifruit) }}</p>
</repeat></code><code><p>apple</p> <p>orange</p> <p>banana</p></code>
然后我们来个复杂的例子:
定义:
<code>$f3->set('div',
array(
'coffee'=>array('arabica','barako','liberica','kopiluwak'),
'tea'=>array('darjeeling','pekoe','samovar')
)
);</code><code><repeat group="{{ @div }}" key="{{ @ikey }}" value="{{ @idiv }}">
<div>
<p><span><b>{{ @ikey }}</b></span></p>
<p>
<repeat group="{{ @idiv }}" value="{{ @ispan }}">
<span>{{ @ispan }}</span>
</repeat>
</p>
</div>
</repeat></code><code><div>
<p><span><b>coffee</b></span></p>
<p>
<span>arabica</span>
<span>barako</span>
<span>liberica</span>
<span>kopiluwak</span>
<p>
</div>
<div>
<p><span><b>tea</b></span></p>
<p>
<span>darjeeling</span>
<span>pekoe</span>
<span>samovar</span>
</p>
</div></code>当然也可以像之前那样判断类别:
<code><repeat group="{{ @fruits }}" value="{{ @fruit }}" counter="{{ @ctr }}">
<p class="{{ @ctr%2?'odd':'even' }}">{{ trim(@fruit) }}</p>
</repeat></code>字符编码:
UTF-8:
<code>$f3->set('ENCODING','ISO-8859-1');</code>email模板:
首先下面先说一下email的逻辑定义:
welcome.txt文件里面是这样的
<code>MIME-Version: 1.0
Content-type: text/html; charset={{ @ENCODING }}
From: {{ @from }}
To: {{ @to }}
Subject: {{ @subject }}
<p>Welcome, and thanks for joining {{ @site }}!</p></code><code>$f3->set('from','<no-reply@mysite.com>');
$f3->set('to','<slasher@throats.com>');
$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')
);</code>当然,上面这个代码只是给单一用户发送邮件的代码,但是我们经常要给一系列的用户发送邮件。所以就不能用这种简单的代码了。
我们可以用smtp的类来发送:教程
$mail=new SMTP('smtp.gmail.com',465,'SSL','account@gmail.com','secret');
$mail->set('from','<no-reply@mysite.com>');
$mail->set('to','"Slasher" <slasher@throats.com>');
$mail->set('subject','Welcome');
$mail->send(Template::instance()->render('email.txt'));
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号