Rumah pembangunan bahagian belakang tutorial php F3-fatfree小型php框架教程(五)_PHP教程

F3-fatfree小型php框架教程(五)_PHP教程

Jul 13, 2016 am 10:32 AM
Tutorial bingkai

看到这里我想再写一个helloworld的程序,不过这次的程序需要调用htm来实现,首先我们知道fatfree主要是以php为引擎的,我们定义一个template.htm文件:

<code><p>Hello, <?php echo $name; ?>!</p></code>
Salin selepas log masuk
注意,这里的name是还没初始化的变量

然后在主函数里面:

<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>
Salin selepas log masuk

这里面的view是内置对象,用于调用htm文件,然后这里给name初始化了然后调用template,输出helloworld,应该没什么问题。


这里也有另外一种fatfree本身的模板,格式是:

<code><p>Hello, {{ @name }}!</p></code>
Salin selepas log masuk
<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>
Salin selepas log masuk
变动就是new的类不同和文件中变量的引用不同。

可以发现fatfree的变量都是以@符号开头的,而且框架会自动产生跟跟文件名一样的类,在这里是template,也就是文件的名字。

再举个例子,如果你定义了:

<code>$f3->set('buddy',array('Tom','Dick','Harry'));</code>
Salin selepas log masuk

然后再在template里面写下:

<code><p>{{ @buddy[0] }}, {{ @buddy[1] }}, and {{ @buddy[2] }}</p></code>
Salin selepas log masuk
就可以输出buddy的数组元素了,但是如果你只在文件里写 {{ @buddy }}的话,那么因为传输进来的是一个数组,所以输出的是‘Array’这个字符串。

文件里面的调用还支持一系列的操作:

<code>{{ 2*(@page-1) }}
{{ (int)765.29&#43;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>
Salin selepas log masuk
只要你源文件里面给这些变量定义完全了,这些操作都是有效的。

还有fatfree里面给函数定义是这样的:

<code>$f3->set('func',
    function($a,$b) {
        return $a.', '.$b;
    }
);</code>
Salin selepas log masuk
定义完之后就可以调用了:

<code>{{ @func('hello','world') }}</code>
Salin selepas log masuk

还有一招在文件里面调用另外一个文件:

<code><include href="header.htm" /></code>
Salin selepas log masuk
如果你怕麻烦也可以用变量的形式调用,首先:

<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>
Salin selepas log masuk
然后:

<code><include href="{{ @content }}" /></code>
Salin selepas log masuk
而且这个include还可以设置为有条件限制的:

<code><include if="{{ count(@items) >= 2 }}" href="items.htm" /></code>
Salin selepas log masuk
这里的count是计算@items数组的元素,这里就不详细说了。



注释:

<code><exclude>
    <p>A chunk of HTML we don't want displayed at the moment</p>
</exclude></code>
Salin selepas log masuk
还有

<code>{* <p>A chunk of HTML we don't want displayed at the moment</p> *}</code>
Salin selepas log masuk
都是fatfree里面的注释。


条件语句:

<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>
Salin selepas log masuk
跟ifelse一样,这里就不说了,但是如果不写false那就全部默认为true:

<code><check if="{{ @loggedin }}">
    <p>HTML chunk to be included if condition is true</p>
</check></code>
Salin selepas log masuk


然后说一个数组输出的方法:

首先定义:

<code>$f3->set('fruits',array('apple','orange ',' banana'));</code>
Salin selepas log masuk
然后文件中

<code><repeat group="{{ @fruits }}" value="{{ @ifruit }}">
    <p>{{ trim(@ifruit) }}</p>
</repeat></code>
Salin selepas log masuk
这样就可以出来效果:

<code><p>apple</p>
<p>orange</p>
<p>banana</p></code>
Salin selepas log masuk

然后我们来个复杂的例子:

定义:

<code>$f3->set('div',
    array(
        'coffee'=>array('arabica','barako','liberica','kopiluwak'),
        'tea'=>array('darjeeling','pekoe','samovar')
    )
);</code>
Salin selepas log masuk
然后文件中:

<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>
Salin selepas log masuk
输出:

<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>
Salin selepas log masuk
现在发现挺好用了吧,然后要说明一下,key对应的值是数组当前指针(多维才适用),value对应的值是数组的值,会根据要求罗列出来。而且如果定义的数组是多维的,例如上面那个div -> coffee -> arabica这个二维数组,repeat也要调用两次,第一次的repeat是进入coffee的第一层,然后第二次调用进入arabica这一层,key对应的就是当时的指针。


当然也可以像之前那样判断类别:

<code><repeat group="{{ @fruits }}" value="{{ @fruit }}" counter="{{ @ctr }}">
    <p class="{{ @ctr%2?'odd':'even' }}">{{ trim(@fruit) }}</p>
</repeat></code>
Salin selepas log masuk
如果ctr是奇数就进odd类,如果是偶数就是even类


字符编码:

UTF-8:

<code>$f3->set('ENCODING','ISO-8859-1');</code>
Salin selepas log masuk

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>
Salin selepas log masuk
我们的定义:

<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>
Salin selepas log masuk
这里有两个比较陌生的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'));
Salin selepas log masuk


















www.bkjia.comtruehttp://www.bkjia.com/PHPjc/755773.htmlTechArticle看到这里我想再写一个helloworld的程序,不过这次的程序需要调用htm来实现,首先我们知道fatfree主要是以php为引擎的,我们定义一个templat...
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Pada musim panas, anda mesti cuba menembak pelangi Pada musim panas, anda mesti cuba menembak pelangi Jul 21, 2024 pm 05:16 PM

Selepas hujan pada musim panas, anda sering dapat melihat pemandangan cuaca istimewa yang indah dan ajaib - pelangi. Ini juga merupakan pemandangan jarang yang boleh ditemui dalam fotografi, dan ia sangat fotogenik. Terdapat beberapa syarat untuk pelangi muncul: pertama, terdapat titisan air yang mencukupi di udara, dan kedua, matahari bersinar pada sudut yang lebih rendah. Oleh itu, adalah paling mudah untuk melihat pelangi pada sebelah petang selepas hujan reda. Walau bagaimanapun, pembentukan pelangi sangat dipengaruhi oleh cuaca, cahaya dan keadaan lain, jadi ia biasanya hanya bertahan untuk jangka masa yang singkat, dan masa tontonan dan penangkapan terbaik adalah lebih pendek. Jadi apabila anda menemui pelangi, bagaimanakah anda boleh merakamnya dengan betul dan mengambil gambar dengan kualiti? 1. Cari pelangi Selain keadaan yang dinyatakan di atas, pelangi biasanya muncul mengikut arah cahaya matahari, iaitu jika matahari bersinar dari barat ke timur, pelangi lebih cenderung muncul di timur.

Bagaimana untuk menilai keberkesanan kos sokongan komersial untuk rangka kerja Java Bagaimana untuk menilai keberkesanan kos sokongan komersial untuk rangka kerja Java Jun 05, 2024 pm 05:25 PM

Menilai kos/prestasi sokongan komersial untuk rangka kerja Java melibatkan langkah-langkah berikut: Tentukan tahap jaminan yang diperlukan dan jaminan perjanjian tahap perkhidmatan (SLA). Pengalaman dan kepakaran pasukan sokongan penyelidikan. Pertimbangkan perkhidmatan tambahan seperti peningkatan, penyelesaian masalah dan pengoptimuman prestasi. Timbang kos sokongan perniagaan terhadap pengurangan risiko dan peningkatan kecekapan.

Bagaimana untuk mendapatkan semula rantaian mata wang maya yang salah? Tutorial tentang mendapatkan semula rantaian pemindahan mata wang maya yang salah Bagaimana untuk mendapatkan semula rantaian mata wang maya yang salah? Tutorial tentang mendapatkan semula rantaian pemindahan mata wang maya yang salah Jul 16, 2024 pm 09:02 PM

Peluasan pasaran maya tidak dapat dipisahkan daripada peredaran mata wang maya, dan secara semula jadi ia juga tidak dapat dipisahkan daripada isu pemindahan mata wang maya. Ralat pemindahan biasa ialah ralat salinan alamat, dan ralat lain ialah ralat pemilihan rantai. Pemindahan mata wang maya ke rantaian yang salah masih menjadi masalah yang sukar, tetapi disebabkan oleh operasi pemindahan yang tidak mahir, orang baru sering memindahkan rantaian yang salah Jadi bagaimana untuk memulihkan rantaian mata wang maya yang salah? Pautan yang salah boleh diambil melalui platform pihak ketiga, tetapi ia mungkin tidak berjaya. Seterusnya, editor akan memberitahu anda secara terperinci untuk membantu anda menjaga aset maya anda dengan lebih baik. Bagaimana untuk mendapatkan semula rantaian mata wang maya yang salah? Proses mendapatkan semula mata wang maya yang dipindahkan ke rantaian yang salah mungkin rumit dan mencabar, tetapi dengan mengesahkan butiran pemindahan, menghubungi bursa atau pembekal dompet, mengimport kunci peribadi ke dompet yang serasi dan menggunakan alat jambatan rantai silang

Bagaimanakah pilihan rangka kerja PHP yang ringan mempengaruhi prestasi aplikasi? Bagaimanakah pilihan rangka kerja PHP yang ringan mempengaruhi prestasi aplikasi? Jun 06, 2024 am 10:53 AM

Rangka kerja PHP yang ringan meningkatkan prestasi aplikasi melalui saiz kecil dan penggunaan sumber yang rendah. Ciri-cirinya termasuk: saiz kecil, permulaan pantas, penggunaan memori yang rendah, kelajuan dan daya tindak balas yang dipertingkatkan, dan penggunaan sumber yang dikurangkan: SlimFramework mencipta API REST, hanya 500KB, responsif yang tinggi dan daya pemprosesan yang tinggi.

Bagaimana untuk memilih rangka kerja golang terbaik untuk senario aplikasi yang berbeza Bagaimana untuk memilih rangka kerja golang terbaik untuk senario aplikasi yang berbeza Jun 05, 2024 pm 04:05 PM

Pilih rangka kerja Go terbaik berdasarkan senario aplikasi: pertimbangkan jenis aplikasi, ciri bahasa, keperluan prestasi dan ekosistem. Rangka kerja Common Go: Gin (aplikasi Web), Echo (Perkhidmatan Web), Fiber (daya pemprosesan tinggi), gorm (ORM), fasthttp (kelajuan). Kes praktikal: membina REST API (Fiber) dan berinteraksi dengan pangkalan data (gorm). Pilih rangka kerja: pilih fasthttp untuk prestasi utama, Gin/Echo untuk aplikasi web yang fleksibel, dan gorm untuk interaksi pangkalan data.

Mengapa anda perlu mengetahui histogram untuk belajar fotografi? Mengapa anda perlu mengetahui histogram untuk belajar fotografi? Jul 20, 2024 pm 09:20 PM

Dalam penggambaran harian, ramai orang menghadapi situasi ini: foto pada kamera nampaknya terdedah seperti biasa, tetapi selepas mengeksport foto, mereka mendapati bahawa bentuk sebenar mereka jauh daripada pemaparan kamera, dan jelas terdapat masalah pendedahan. Terjejas oleh cahaya persekitaran, kecerahan skrin dan faktor lain, keadaan ini agak normal, tetapi ia juga membawa kita pendedahan: apabila melihat foto dan menganalisis foto, anda mesti belajar membaca histogram. Jadi, apakah histogram? Secara mudah difahami, histogram ialah bentuk paparan taburan kecerahan piksel foto: secara mendatar, histogram boleh dibahagikan secara kasar kepada tiga bahagian, sebelah kiri ialah kawasan bayang, tengah ialah kawasan midtone, dan sebelah kanan ialah kawasan sorotan; Di sebelah kiri ialah kawasan hitam mati dalam bayang-bayang, manakala di hujung kanan ialah kawasan tumpah dalam sorotan. Paksi menegak mewakili pengedaran khusus piksel

Bagaimanakah keluk pembelajaran rangka kerja PHP berbanding rangka kerja bahasa lain? Bagaimanakah keluk pembelajaran rangka kerja PHP berbanding rangka kerja bahasa lain? Jun 06, 2024 pm 12:41 PM

Keluk pembelajaran rangka kerja PHP bergantung pada kecekapan bahasa, kerumitan rangka kerja, kualiti dokumentasi dan sokongan komuniti. Keluk pembelajaran rangka kerja PHP adalah lebih tinggi jika dibandingkan dengan rangka kerja Python dan lebih rendah jika dibandingkan dengan rangka kerja Ruby. Berbanding dengan rangka kerja Java, rangka kerja PHP mempunyai keluk pembelajaran yang sederhana tetapi masa yang lebih singkat untuk bermula.

Tutorial pembinaan Stable Diffusion 3 dan demonstrasi contoh rasmi, GALAXY GeForce RTX 4070 Ti SUPER Xingyao OC berjalan ke kelajuan penuh dalam sekelip mata Tutorial pembinaan Stable Diffusion 3 dan demonstrasi contoh rasmi, GALAXY GeForce RTX 4070 Ti SUPER Xingyao OC berjalan ke kelajuan penuh dalam sekelip mata Jun 24, 2024 am 05:59 AM

Sebagai versi terbaru model penjanaan imej AI, StableDiffusion3 datang dengan jangkaan yang hebat, saya percaya bahawa ramai rakan mesti menggunakan model penjanaan imej lebih kurang dalam kerja dan kehidupan, jadi mari kita lihat Stablediffusion3 di bawah proses pembinaan tempatan Tanpa berlengah lagi, inilah maklumat praktikal. Konfigurasi platform yang digunakan dalam binaan ini adalah seperti berikut: Memandangkan permintaan kukuh untuk kuasa pengkomputeran semasa menjalankan Stablediffusion3 secara tempatan, kami memilih kad grafik GALAXY GeForceRTX4070TiSUPER Xingyao OC kali ini. GEFORCERTX4070TiSUPER dibina berdasarkan teras AD103 dan juga merupakan kad grafik terbesar seumpama ini.

See all articles