毛毛虫教你写一个属于自己的模板引擎_PHP教程
#phpchina首发# Smarty一直被人视为是多余的东西,我觉得认为Smarty多余的人才是多余的....不说这些了。今天我就教大家写个模板引擎,让大家都可以写一个属于自己的模板引擎,而且看完这篇文章之后,你对Smarty的认识会更进一步的。我的模板引擎名叫Stupid("傻瓜"的意思),我不喜欢太聪明的东西! 好了,我们现在就先编写stupid.class.php吧。 下面定义了两个常量,用来存放模板文件夹和编译文件夹的: 开始编码了>>> define(TPL_DIR, ./templates/); class Stupid { 开始写个构造器吧>>> public function Stupid() { 在构造器中,我们判断了模板路径和编译路径是否设置正确. 设计我们的方法 public function assign($var, $value) { display()方法 代码如下>>> public function display($tpl_file) { 这个方法是根据!file_exists($parsed_file)||filemtime($parsed_file)
debug()方法 代码如下>>> public function debug ($tpl_file) { 至此,我们的Stupid类就写完了!下次我要介绍StupidParser类的编写.请继续支持.大家有什么意见或者建议可以提出! show show全相: define(TPL_DIR, ./templates/); public function Stupid() { public function assign($var, $value) { public function display($tpl_file) { function debug($tpl_file) {
Stupid模板引擎是由3个文件组成,他们分别是:stupid.class.php,stupid_parser.class.php,stupid_debugger.class.php。
Stupid.class.php的任务是设置变量,模板路径,和显示等功能,而stupid_parser.class.php就是编译模板文件的,stupid_debugger.class.php是用来调试用的。
1.新建一个PHP文件名为:stupid.class.php。
我们的类叫Stupid,我们先设计一下成员变量吧。
成员变量有:$_tpl_vars, $_tpl_file, $_parser, $_debugger;
$_tpl_vars: 用来保存模板变量的;
$_tpl_file: 用来保存模板文件名的;
$_parser: 保存StupidParser对象的,就是编译对象;
$_debugger: 保存StupidDebug对象的,就是调试对象;
define(TPL_DIR, ./templates/);
define(TPL_C_DIR, ./templates_c/);
define(TPL_C_DIR, ./templates_c/);
private $_tpl_vars;
private $_tpl_file;
private $_parser;
private $_debugger;
}
?>
if(!is_dir(TPL_DIR) || !is_dir(TPL_C_DIR)) {
exit(错误:请正确设置模板文件夹和编译文件夹);
}
}
我们这个类中主要有以下方法:
assign(), set_tpl_dir(), set_parsed_dir(), display(), debug().
assign()方法:
assign()的用处是设置模板变量.代码如下>>>
if(isset($var) && trim($var) != ) {
$this->_tpl_vars[$var] = $value;
return true;
} else {
exit(错误:请设置变量名);
}
}
我们先判断用户是否设置了变量名,用isset($var) && trim($var) != 来判断, trim($var) != 是防止用户以空格来设置变量名.如果设置变量正确,我们就将他保存到成员变量_tpl_vars中.
display()方法是Stupid类中最重要的方法,他是用来显示和检测模板是否更新了,更新了就再编译,没有更新就用原来编译之后的文件.
$template_file = TPL_DIR.$tpl_file;
if(!file_exists($template_file)) {
exit(错误:模板文件不存在);
}
$parsed_file = TPL_C_DIR.md5($tpl_file)..php;
if(!file_exists($parsed_file) || filemtime($parsed_file) require_once ./stupid_parser.class.php;
$this->_parser = new StupidParser();
$this->_parser->compile($tpl_file);
}
include $parsed_file;
}
Debugg()方法就比较简单,就是引入stupid_debugger.class.php文件,创建StupidDebuger对象,调用StupidDebuger的start方法进行调试.
if (include_once("stupid_debugger.class.php")) {
$this->_debugger = new StupidDebugger(TPL_DIR. $tpl_file);
$this->_debugger->start();
} else {
exit( 错误:Debuger类文件不存在);
}
}
define(TPL_C_DIR, ./templates_c/);
class Stupid {
private $_tpl_vars;
private $_tpl_file;
private $_parser;
private $_debug;
if(!is_dir(TPL_DIR) || !is_dir(TPL_C_DIR)) {
exit(错误:请正确设置模板文件夹和编译文件夹);
}
}
if(isset($var) && trim($var) != ) {
$this->_tpl_vars[$var] = $value;
return true;
} else {
exit(错误:请设置变量名);
}
}
$template_file = TPL_DIR.$tpl_file;
if(!file_exists($template_file)) {
exit(错误:模板文件不存在);
}
$parsed_file = TPL_C_DIR.md5($tpl_file)..php;
if(!file_exists($parsed_file) || filemtime($parsed_file) require_once ./stupid_parser.class.php;
$this->_parser = new StupidParser();
$this->_parser->compile($tpl_file);
}
include $parsed_file;
}
if (include_once("stupid_debugger.class.php")) {
$this->_debugger = new StupidDebugger($this->_template_dir . $tpl_file);
$this->_debugger->start();
} else {
exit( 错误:Debuger类文件不存在);
}
}
}
?>

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Bagaimana untuk menyediakan permulaan papan kekunci pada papan induk Gigabyte Pertama, jika ia perlu menyokong permulaan papan kekunci, ia mestilah papan kekunci PS2! ! Langkah-langkah tetapan adalah seperti berikut: Langkah 1: Tekan Del atau F2 untuk memasuki BIOS selepas but, dan masukkan mod Lanjutan (Lanjutan) BIOS Papan induk biasa masukkan mod EZ (Mudah) papan induk secara lalai untuk menekan F7 untuk beralih ke mod Lanjutan papan induk siri ROG masukkan BIOS secara lalai (kami menggunakan Bahasa Cina Mudah untuk menunjukkan) Langkah 2: Pilih untuk - [Lanjutan] - [Pengurusan Kuasa Lanjutan (APM)] Langkah 3: Cari pilihan [Bangun dengan papan kekunci PS2] Langkah 4: Pilihan lalai ini Dilumpuhkan Selepas menarik ke bawah, anda boleh melihat tiga pilihan tetapan yang berbeza, termasuk menekan [bar ruang] untuk menghidupkan komputer dan menekan butang kumpulan.

1. Pemproses Apabila memilih konfigurasi komputer, pemproses adalah salah satu komponen yang paling penting. Untuk permainan seperti CS, prestasi pemproses secara langsung mempengaruhi kelancaran dan kelajuan tindak balas permainan. Adalah disyorkan untuk memilih pemproses siri Intel Core i5 atau i7 kerana ia mempunyai keupayaan pemprosesan berbilang teras yang berkuasa dan frekuensi tinggi, dan dengan mudah boleh menampung keperluan CS yang tinggi. 2. Kad grafik Kad grafik merupakan salah satu faktor penting dalam prestasi permainan. Untuk permainan menembak seperti CS, prestasi kad grafik secara langsung mempengaruhi kejelasan dan kelancaran skrin permainan. Adalah disyorkan untuk memilih siri NVIDIA GeForce GTX atau kad grafik siri AMD Radeon RX Mereka mempunyai keupayaan pemprosesan grafik yang sangat baik dan output kadar bingkai yang tinggi, dan boleh memberikan pengalaman permainan yang lebih baik

Apple melancarkan kemas kini iOS 17.4 pada hari Selasa, membawakan pelbagai ciri dan pembaikan baharu kepada iPhone. Kemas kini termasuk emoji baharu, dan pengguna EU juga boleh memuat turunnya daripada kedai aplikasi lain. Di samping itu, kemas kini juga mengukuhkan kawalan keselamatan iPhone dan memperkenalkan lebih banyak pilihan tetapan "Perlindungan Peranti Dicuri" untuk menyediakan pengguna dengan lebih banyak pilihan dan perlindungan. "iOS17.3 memperkenalkan fungsi "Perlindungan Peranti Dicuri" buat kali pertama, menambahkan keselamatan tambahan kepada maklumat sensitif pengguna. Apabila pengguna berada jauh dari rumah dan tempat biasa lain, fungsi ini memerlukan pengguna memasukkan maklumat biometrik untuk pertama kali masa, dan selepas satu jam Anda mesti memasukkan maklumat sekali lagi untuk mengakses dan menukar data tertentu, seperti menukar kata laluan Apple ID anda atau mematikan perlindungan peranti yang dicuri.

Urutan talian sambungan SPDIFOUT pada papan induk Baru-baru ini, saya menghadapi masalah mengenai urutan pendawaian wayar. Saya menyemak dalam talian Beberapa maklumat mengatakan bahawa 1, 2, dan 4 sepadan dengan keluar, +5V, dan tanah manakala maklumat lain mengatakan bahawa 1, 2, dan 4 sepadan dengan keluar, tanah dan +5V. Cara terbaik ialah menyemak manual papan induk anda Jika anda tidak menemui manual, anda boleh menggunakan multimeter untuk mengukurnya. Cari tanah dahulu, kemudian anda boleh menentukan susunan pendawaian yang lain. Cara menyambung pendawaian VDG papan induk Apabila menyambungkan pendawaian VDG papan induk, anda perlu palamkan satu hujung kabel VGA ke antara muka VGA monitor dan hujung satu lagi ke antara muka VGA kad grafik komputer. Sila berhati-hati untuk tidak memasukkannya ke dalam port VGA motherboard. Setelah disambungkan, anda boleh

Glodon Software ialah sebuah syarikat perisian yang memfokuskan pada bidang pemformatan bangunan. Produknya digunakan secara meluas dalam semua aspek reka bentuk seni bina, pembinaan dan operasi. Oleh kerana fungsi kompleks dan volum data yang besar perisian Glodon, ia memerlukan konfigurasi komputer yang tinggi. Artikel ini akan menghuraikan cadangan konfigurasi komputer Perisian Glodon dari banyak aspek untuk membantu pembaca memilih pemproses konfigurasi komputer yang sesuai memerlukan pengiraan dan pemprosesan data yang besar apabila melakukan reka bentuk seni bina, simulasi dan operasi lain kerana pemproses lebih tinggi. Adalah disyorkan untuk memilih pemproses berbilang teras, frekuensi tinggi, seperti siri Intel i7 atau siri AMD Ryzen. Pemproses ini mempunyai kuasa pengkomputeran yang kuat dan keupayaan pemprosesan berbilang benang, dan boleh memenuhi keperluan perisian Glodon dengan lebih baik. Memori Memori menjejaskan pengkomputeran

Templat e-mel PHP: Peribadikan dan peribadikan kandungan e-mel anda Dengan populariti dan penggunaan e-mel yang meluas, templat e-mel tradisional tidak lagi dapat memenuhi keperluan orang ramai untuk kandungan e-mel yang diperibadikan dan diperibadikan. Kini kita boleh mencipta templat e-mel yang disesuaikan dan diperibadikan dengan menggunakan bahasa pengaturcaraan PHP. Artikel ini akan menunjukkan kepada anda cara menggunakan PHP untuk mencapai matlamat ini dan memberikan beberapa contoh kod khusus. 1. Buat templat e-mel Pertama, kita perlu mencipta templat e-mel asas. Templat ini boleh menjadi HTM

Berkenaan PPT masking, pasti ramai yang tidak faham dengannya ketika membuat PPT, tetapi hanya mengada-ngada untuk membuat apa yang mereka suka Oleh itu, ramai yang tidak tahu apa itu PPT masking, dan mereka juga tidak faham Saya tahu apa yang dilakukan oleh topeng ini, dan saya tidak tahu bahawa ia boleh menjadikan gambar itu kurang membosankan. Jadi, bagaimana untuk menambah topeng PPT? Sila baca di bawah. 1. Mula-mula kita buka PPT, pilih gambar kosong, kemudian klik kanan [Set Background Format] dan pilih warna pepejal. 2. Klik [Insert], word art, masukkan perkataan 3. Klik [Insert], klik [Shape]

Pengkhususan templat C++ mempengaruhi lebihan beban dan penulisan semula fungsi: Kelebihan beban fungsi: Versi khusus boleh menyediakan pelaksanaan berbeza bagi jenis tertentu, sekali gus menjejaskan fungsi yang dipilih pengkompil untuk memanggil. Mengatasi fungsi: Versi khusus dalam kelas terbitan akan mengatasi fungsi templat dalam kelas asas, menjejaskan kelakuan objek kelas terbitan apabila memanggil fungsi.
