看到這裏我想再寫一個helloworld的程序,不過此次的程序須要調用htm來實現,首先咱們知道fatfree主要是以php爲引擎的,咱們定義一個template.htm文件:php
<p>Hello, <?php echo $name; ?>!</p>注意,這裏的name是還沒初始化的變量
而後在主函數裏面:html
$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,應該沒什麼問題。web
這裏也有另一種fatfree自己的模板,格式是:數組
<p>Hello, {{ @name }}!</p>
$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,也就是文件的名字。app
再舉個例子,若是你定義了:框架
$f3->set('buddy',array('Tom','Dick','Harry'));
而後再在template裏面寫下:函數
<p>{{ @buddy[0] }}, {{ @buddy[1] }}, and {{ @buddy[2] }}</p>就能夠輸出buddy的數組元素了,可是若是你只在文件裏寫
{{ @buddy }}
的話,那麼由於傳輸進來的是一個數組,因此輸出的是‘Array’這個字符串。
文件裏面的調用還支持一系列的操做:ui
{{ 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 }}只要你源文件裏面給這些變量定義徹底了,這些操做都是有效的。
還有fatfree裏面給函數定義是這樣的:編碼
$f3->set('func', function($a,$b) { return $a.', '.$b; });定義完以後就能夠調用了:
{{ @func('hello','world') }}
還有一招在文件裏面調用另一個文件:spa
<include href="header.htm" />若是你怕麻煩也能夠用變量的形式調用,首先:
// 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 href="{{ @content }}" />並且這個include還能夠設置爲有條件限制的:
<include if="{{ count(@items) >= 2 }}" href="items.htm" />這裏的count是計算@items數組的元素,這裏就不詳細說了。
註釋:
<exclude> <p>A chunk of HTML we don't want displayed at the moment</p></exclude>還有
{* <p>A chunk of HTML we don't want displayed at the moment</p> *}都是fatfree裏面的註釋。
條件語句:
<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>跟ifelse同樣,這裏就不說了,可是若是不寫false那就所有默認爲true:
<check if="{{ @loggedin }}"> <p>HTML chunk to be included if condition is true</p></check>
而後說一個數組輸出的方法:
首先定義:
$f3->set('fruits',array('apple','orange ',' banana'));而後文件中
<repeat group="{{ @fruits }}" value="{{ @ifruit }}"> <p>{{ trim(@ifruit) }}</p></repeat>這樣就能夠出來效果:
<p>apple</p><p>orange</p><p>banana</p>
而後咱們來個複雜的例子:
定義:
$f3->set('div', array( 'coffee'=>array('arabica','barako','liberica','kopiluwak'), 'tea'=>array('darjeeling','pekoe','samovar') ));而後文件中:
<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>輸出:
<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>如今發現挺好用了吧,而後要說明一下,key對應的值是數組當前指針(多維才適用),value對應的值是數組的值,會根據要求羅列出來。並且若是定義的數組是多維的,例如上面那個div -> coffee -> arabica這個二維數組,repeat也要調用兩次,第一次的repeat是進入coffee的第一層,而後第二次調用進入arabica這一層,key對應的就是當時的指針。
固然也能夠像以前那樣判斷類別:
<repeat group="{{ @fruits }}" value="{{ @fruit }}" counter="{{ @ctr }}"> <p class="{{ @ctr%2?'odd':'even' }}">{{ trim(@fruit) }}</p></repeat>若是ctr是奇數就進odd類,若是是偶數就是even類
字符編碼:
UTF-8:
$f3->set('ENCODING','ISO-8859-1');
email模板:
首先下面先說一下email的邏輯定義:
welcome.txt文件裏面是這樣的
MIME-Version: 1.0 Content-type: text/html; charset={{ @ENCODING }} From: {{ @from }} To: {{ @to }} Subject: {{ @subject }}<p>Welcome, and thanks for joining {{ @site }}!</p>咱們的定義:
$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'));這裏有兩個比較陌生的php函數,ini_php函數是用來修改php.ini基本配置文件的函數,可是會在腳本運行結束後恢復。而mail函數是php內置的核心函數,不須要額外安裝,也就是發email的,這裏是簡單的使用模式,分別是接收者,主題,內容。可是要注意,發送成功不表示對方必定會接收到。
固然,上面這個代碼只是給單一用戶發送郵件的代碼,可是咱們常常要給一系列的用戶發送郵件。因此就不能用這種簡單的代碼了。
咱們能夠用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'));