#phpchina开户#
Smarty selalu dianggap sebagai hal yang mubazir. Menurut saya orang yang menganggap Smarty mubazir adalah mubazir.... Jangan bicarakan hal ini lagi. Hari ini saya akan mengajari Anda cara menulis mesin template sehingga setiap orang dapat menulis mesin template sendiri. Setelah membaca artikel ini, pemahaman Anda tentang Smarty akan lebih baik. Mesin template saya namanya Bodoh (artinya "bodoh"), saya tidak suka hal-hal yang terlalu pintar!
Mesin template Stupid terdiri dari 3 file, yaitu: bodoh.class.php, bodoh_parser.class.php, bodoh_debugger.class.php.
Tugas Stupid.class.php adalah mengatur variabel, jalur template, dan fungsi tampilan, sedangkan Stupid_parser.class.php digunakan untuk mengkompilasi file template, dan Stupid_debugger.class.php digunakan untuk debugging.
Oke, mari kita tulis bodoh.class.php sekarang.
1. Buat file PHP baru bernama: bodoh.kelas.php.
Kelas kita disebut Bodoh. Mari kita desain variabel anggotanya terlebih dahulu.
Variabel anggota meliputi: $_tpl_vars, $_tpl_file, $_parser, $_debugger;
$_tpl_vars: digunakan untuk menyimpan variabel template;
$_tpl_file: digunakan untuk menyimpan nama file template;
$_parser: Yang menyimpan objek StupidParser adalah objek yang dikompilasi;
$_debugger: Yang menyimpan objek StupidDebug adalah objek debugging
yang didefinisikan di bawah ini, yang digunakan untuk menyimpan folder template dan folder kompilasi:
mendefinisikan('TPL_DIR', './template/');
mendefinisikan('TPL_C_DIR', './templates_c/');Mulai
coding>>>
<?php
mendefinisikan('TPL_DIR', './template/');
mendefinisikan('TPL_C_DIR', './templates_c/');
kelas Bodoh {
pribadi $_tpl_vars;
pribadi $_tpl_file;
pribadi $_parser;
pribadi $_debugger;
}
?>
Mulai menulis konstruktor>>>
public function Bodoh() {
jika(!is_dir(TPL_DIR) || !is_dir(TPL_C_DIR)) {
exit('Error: Silakan atur folder template dan folder kompilasi dengan benar');
}
}
Di konstruktor, kami menentukan apakah jalur templat dan jalur kompilasi disetel dengan benar.
Rancang metode kami pada dasarnya memiliki metode berikut:
menetapkan(), set_tpl_dir(), set_parsed_dir(), tampilan(), debug().
menetapkan() metode:
Tujuan dari tugas() adalah untuk mengatur variabel templat. Kodenya adalah sebagai berikut >>>
public functionassign($var, $value) {
if(isset($var) && trim($var) != '') {
$ini->_tpl_vars[$var] = $nilai;
kembali benar;
} kalau tidak {
exit('Kesalahan: Harap tetapkan nama variabel');
}
}
Pertama-tama kita tentukan apakah pengguna telah menyetel nama variabel, gunakan isset($var) && trim($var) != '' untuk menentukan, trim($var) != '' mencegah pengguna menyetel nama variabel dengan spasi . Jika disetel Jika variabelnya benar, kami akan menyimpannya ke metode variabel anggota
_tpl_vars
Metode display() adalah metode yang paling penting di kelas Bodoh. Digunakan untuk menampilkan dan mendeteksi apakah template telah diperbarui, maka akan dikompilasi ulang
Kode
yang akan digunakan
adalah sebagai berikut >>>public function display( $tpl_file) {
$template_file = TPL_DIR.$tpl_file;
if(!file_exists($template_file)) {
exit('Error: file template tidak ada');
}
$parsed_file = TPL_C_DIR.md5($tpl_file).'.php';
if(!file_exists($parsed_file) || filemtime($parsed_file) < filemtime($template_file)) {
require_once './stupid_parser.class.php';
$ini->_parser = baru StupidParser();
$ini->_parser->kompilasi($tpl_file);
}
sertakan $parsed_file;
}
Metode ini didasarkan pada pernyataan !file_exists($parsed_file)||filemtime($parsed_file)< filemtime($template_file) untuk menentukan apakah sudah dikompilasi dan apakah file template sudah diupdate file template telah diperbarui, itu harus dikompilasi ulang. Kami akan memperkenalkan bodoh_parser.class.php, membuat objek StupidParser, dan mengkompilasi file template. Setelah kompilasi, kami akan memperkenalkan file template yang telah dikompilasi
adalahmetode debug()
file PHP biasa
Metode Debugg() relatif sederhana, yaitu memasukkan file bodoh_debugger.class.php, membuat objek StupidDebuger, dan memanggil metode awal StupidDebuger untuk debugging.
Kodenya adalah sebagai berikut >>>
public function debug ($tpl_file ) {
if (include_once("stupid_debugger.class.php")) {
$this->_debugger = baru StupidDebugger(TPL_DIR.$tpl_file);
$ini->_debugger->mulai();
} kalau tidak {
exit('Kesalahan: File kelas debuger tidak ada');
}
}
Sampai disini kelas Stupid kita sudah selesai! Lain kali saya akan memperkenalkan penulisan kelas StupidParser. Silakan terus mendukung. Jika Anda memiliki komentar atau saran, Anda dapat
mengajukan
!
mendefinisikan('TPL_DIR', './template/');
mendefinisikan('TPL_C_DIR', './templates_c/');
kelas Bodoh {
pribadi $_tpl_vars;
pribadi $_tpl_file;
pribadi $_parser;
pribadi $_debug;
fungsi publik Bodoh() {
jika(!is_dir(TPL_DIR) || !is_dir(TPL_C_DIR)) {
exit('Error: Silakan atur folder template dan folder kompilasi dengan benar');
}
}
penetapan fungsi publik($var, $nilai) {
if(isset($var) && trim($var) != '') {
$ini->_tpl_vars[$var] = $nilai;
kembali benar;
} kalau tidak {
exit('Kesalahan: Harap tetapkan nama variabel');
}
}
tampilan fungsi publik($tpl_file) {
$template_file = TPL_DIR.$tpl_file;
if(!file_exists($template_file)) {
exit('Error: file template tidak ada');
}
$parsed_file = TPL_C_DIR.md5($tpl_file).'.php';
if(!file_exists($parsed_file) || filemtime($parsed_file) < filemtime($template_file)) {
require_once './stupid_parser.class.php';
$ini->_parser = baru StupidParser();
$ini->_parser->kompilasi($tpl_file);
}
sertakan $parsed_file;
}
debug fungsi($tpl_file) {
if (include_once("stupid_debugger.class.php")) {
$this->_debugger = baru StupidDebugger($this->_template_dir .$tpl_file);
$ini->_debugger->mulai();
} kalau tidak {
exit('Kesalahan: File kelas debuger tidak ada');
}
}
}
?>