Rumah pembangunan bahagian belakang tutorial php class.rFastTemplate.php一_PHP教程

class.rFastTemplate.php一_PHP教程

Jul 13, 2016 pm 05:24 PM
multi satu

// 2001 Alister Bulman Re-Port multi template-roots + more // PHP3 Port: Copyright ?1999 CDI , All Rights Reserved. // Perl Version: Copyright ?1998 Jason Moore , All Rights Reserved. // // RCS Revision // @(#) $Id: class.rFastTemplate.php,v 1.22 2001/10/18 21:36:53 roland Exp $ // $Source: /home/cvs/projects/php/tools/class.rFastTemplate.php,v $ // // Copyright Notice // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2, or (at your option) // any later version. // // class.rFastTemplate.php is distributed in the hope that it will be // useful, but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // General Public License for more details. // // Comments // // I would like to thank CDI for pointing out the // copyright notice attached to his PHP3 port which I had blindly missed // in my first release of this code. // // This work is derived from class.FastTemplate.php3 version 1.1.0 as // available from http://www.thewebmasters.net/. That work makes // reference to the "GNU General Artistic License". In correspondence // with the author, the intent was to use the GNU General Public License; // this work does the same. // // Authors // // Roland Roberts // Alister Bulman (multi template-roots) // Michal Rybarik (define_raw()) // CDI , PHP3 port // Jason Moore , original Perl version // // Synopsis // // require ("PATH-TO-TEMPLATE-CODE/class.Template.php"); // $t = new Template("PATH-TO-TEMPLATE-DIRECTORY"); // $t->define (array(MAIN => "diary.html")); // $t->setkey (VAR1, "some text"); // $t->subst (INNER, "inner") // $t->setkey (VAR1, "some more text"); // $t->subst (INNER, ".inner") // $t->setkey (VAR2, "var2 text"); // $t->subst (CONTENT, "main"); // $t->print (CONTENT); // // Description // // This is a class.FastTemplate.php3 replacement that provides most of the // same interface but has the ability to do nested dynamic templates. The // default is to do dynamic template expansion and no special action is // required for this to happen. // // class.FastTemplate.php3 Methods Not Implemented // // clear_parse // Same as clear. In fact, it was the same as clear in FastTemplate. // clear_all // If you really think you need this, try // unset $t; // $t = new Template ($path); // which gives the same effect. // clear_tpl // Use unload instead. This has the side effect of unloading all parent // and sibling templates which may be more drastic than you expect and // is different from class.FastTemplate.php3. This difference is // necessary since the only way we can force the reload of an embedded // template is to force the reload of the parent and sibling templates. // // class.FastTemplate.php3 Methods by Another Name // // The existence of these functions is a historical artifact. I // originally had in mind to write a functional equivalent from scratch. // Then I came my senses and just grabbed class.FastTemplate.php3 and // started hacking it. So, you can use the names on the right, but the // ones on the left are equivalent and are the names used in the original // class.FastTemplate.php3. // // parse --> subst // get_assiged --> getkey // assign --> setkey // clear_href --> unsetkey // clear_assign --> unsetkey // FastPrint --> xprint // class rFastTemplate { // File name to be used for debugging output. Needs to be set prior to // calling anything other than option setting commands (debug, debugall, // strict, dynamic) because once the file has been opened, this is ignored. var $DEBUGFILE = /tmp/class.rFastTemplate.php.dbg; // File descriptor for debugging output. var $DEBUGFD = -1; // Array for individual member functions. You can turn on debugging for a // particular member function by calling $this->debug(FUNCTION_NAME) var $DEBUG = array (); // Turn this on to turn on debugging in all member functions via // $this->debugall(). Turn if off via $this->debugall(false); var $DEBUGALL = false; // Names of actual templates. Each element will be an array with template // information including is originating file, file load status, parent // template, variable list, and actual template contents. var $TEMPLATE = array(); // Holds paths-to-templates (See: set_root and FindTemplate) var $ROOT = array(); // Holds the HANDLE to the last template parsed by parse() var $LAST = ; // Strict template checking. Unresolved variables in templates will generate a // warning. var $STRICT = true; // If true, this suppresses the warning generated by $STRICT=true. var $QUIET = false; // Holds handles assigned by a call to parse(). var $HANDLE = array(); // Holds all assigned variable names and values. var $VAR = array(); // Set to true is this is a WIN32 server. This was part of the // class.FastTemplate.php3 implementation and the only real place it kicks // in is in setting the terminating character on the value of $ROOT, the // path where all the templates live. var $WIN32 = false; // Automatically scan template for dynamic templates and assign new values // to TEMPLATE based on whatever names the HTML comments use. This can be // changed up until the time the first parse() is called. Well, you can // change it anytime, but it will have no effect on already loaded // templates. Also, if you have dynamic templates, the first call to parse // will load ALL of your templates, so changing it after that point will // have no effect on any defined templates. var $DYNAMIC = true; // Grrr. Dont try to break these extra long regular expressions into // multiple lines for readability. PHP 4.03pl1 chokes on them if you do. // Im guessing the reason is something obscure with the parenthesis // matching, the same sort of thing Tcl might have, but Im not sure. // Regular expression which matches the beginning of a dynamic/inferior // template. The critical bit is that we need two parts: (1) the entire // match, and (2) the name of the dynamic template. The first part is // required because will do a strstr() to split the buffer into two // pieces: everything before the dynamic template declaration and // everything after. The second is needed because after finding a BEGIN // we will search for an END and they both have to have the same name of // we consider the template malformed and throw and error. // Both of these are written with PCRE (Perl-Compatible Regular // Expressions) because we need the non-greedy operators to insure that // we dont read past the end of the HTML comment marker in the case that // the BEGIN/END block have trailing comments after the tag name. var $REGEX_DYNBEG = /()/; // Regular expression which matches the end of a dynamic/inferior // template; see the comment about on the BEGIN match. var $REGEX_DYNEND = /()/; // Regular expression which matches a variable in the template. var $REGEX_VAR = /{[A-Za-z][-_A-Za-z0-9]*}/; // // Description // Constructor. // function rFastTemplate ($pathToTemplates = ) { // $pathToTemplates can also be an array of template roots, handled in set_root global $php_errormsg; if (!empty($pathToTemplates)) { $this->set_root ($pathToTemplates); } $this->DEBUG = array (subst => false, parse_internal => false, parse_internal_1 => false, parsed => false, clear => false, clear_dynamic => false, load => false); return $this; } // // Description // Set the name to be u

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/532115.htmlTechArticle// 2001 Alister Bulman Re-Port multi template-roots + more // PHP3 Port: Copyright ?1999 CDI , All Rights Reserved. // Perl Version: Copyright ?1998 Jason Moore , All Rights Reserv...
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

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

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)

Adakah kvr800d2n6 serasi dengan DDR3? (Adakah kvr800d2n6 menyediakan versi 4GB) Adakah kvr800d2n6 serasi dengan DDR3? (Adakah kvr800d2n6 menyediakan versi 4GB) Jan 09, 2024 pm 10:33 PM

Bolehkah kvr800d2n6 digunakan dengan ddr3? 1. Oleh kerana kvr800d2n6 ialah modul memori DDR2, dan DDR3 ialah satu lagi jenis modul memori, kedua-duanya tidak serasi. 2. Walaupun bentuk slot DDR2 dan DDR3 adalah sama, terdapat perbezaan dalam voltan, pemasaan, kadar penghantaran, dll., jadi jenis modul memori yang berbeza tidak boleh saling beroperasi. kvr800d2n6 adalah kayu ingatan beberapa generasi Apabila menulis semula kandungan, bahasa perlu ditukar kepada bahasa Cina tanpa mengubah maksud asal kvr800 Apabila menulis semula kandungan memori, bahasa perlu ditukar kepada bahasa Cina tanpa mengubah maksud asal. (DDR2 Memori Frekuensi utama ialah 800mhz. kvr800d2n62g ialah Kingston KVR800

Latihan praktikal Python Pandas, kemajuan pantas untuk pemula pemprosesan data! Latihan praktikal Python Pandas, kemajuan pantas untuk pemula pemprosesan data! Mar 20, 2024 pm 10:21 PM

Gunakan read_csv() untuk membaca fail CSV: df=pd.read_csv("data.csv") Kendalikan nilai yang tiada: Alih keluar nilai yang tiada: df=df.dropna() Isikan nilai yang tiada: df["column_name"].fillna( value ) Tukar jenis data: df["column_name"]=df["column_name"].astype(dtype) Isih dan pengumpulan: Isih: df.sort_values(by="column_name") Pengumpulan: groupby_object=df.groupby(by= " nama_lajur

Apakah mata wang MULTI dan apakah kelebihannya? Apakah mata wang MULTI dan apakah kelebihannya? Jan 31, 2024 pm 04:23 PM

MULTI coin ialah mata wang digital terdesentralisasi yang dibina berdasarkan teknologi kontrak pintar dan bertujuan untuk menyediakan perkhidmatan pemindahan dan pertukaran aset yang cepat, mudah dan berkos rendah. Kelebihannya: 1. Desentralisasi; 2. Pembayaran rentas sempadan;

Petua Lanjutan PHP PDO: Menggunakan Prosedur dan Transaksi Tersimpan Petua Lanjutan PHP PDO: Menggunakan Prosedur dan Transaksi Tersimpan Feb 20, 2024 am 10:01 AM

Prosedur tersimpan ialah penyata sql yang disusun dan disimpan pada pelayan pangkalan data. Apabila anda perlu melaksanakan prosedur tersimpan, anda hanya perlu memanggil nama prosedur tersimpan tanpa menulis semula pernyataan SQL. Prosedur tersimpan boleh meningkatkan kebolehbacaan dan kecekapan kod, terutamanya apabila pernyataan SQL yang kompleks atau berulang perlu dilaksanakan. 1. Buat prosedur tersimpan CREATEPROCEDUREget_customer_by_id(INcustomer_idINT)BEGINSELECT*FROMcustomersWHEREcustomer_id=customer_id;END2 Panggil prosedur tersimpan $stmt=$pdo->prepare(.

Menjadi mahir dalam pengendalian pengecualian Java: Kawal ralat dalam kod anda Menjadi mahir dalam pengendalian pengecualian Java: Kawal ralat dalam kod anda Mar 24, 2024 pm 04:06 PM

Sistem pengendalian pengecualian Java mengikut struktur hierarki, daripada kelas Throwable yang paling umum kepada subkelas yang lebih khusus seperti Exception dan Ralat. Memahami hierarki ini adalah penting kerana ia menentukan cara pengecualian dikendalikan dan skopnya. 2. Kuasai mekanisme penyebaran pengecualian Apabila pengecualian disebarkan dalam program, ia akan bergerak ke atas timbunan panggilan. Jika pengecualian tidak dikendalikan dalam kod, ia akan disebarkan kepada kaedah yang memanggilnya, dan seterusnya. Memahami mekanisme penyebaran pengecualian adalah penting untuk memastikan pengecualian dikendalikan dengan sewajarnya. 3. Gunakan blok try-catch-finally Blok try-catch-finally ialah mekanisme pilihan untuk mengendalikan pengecualian dalam Java. Blok cuba mengandungi kod yang perlu dilaksanakan, manakala

Ak mana yang terbaik dalam perang balas (kedudukan ak dalam perang balas) Ak mana yang terbaik dalam perang balas (kedudukan ak dalam perang balas) Jan 07, 2024 pm 06:34 PM

AK mana yang terbaik dalam perang balas: AK47 ialah senapang yang sangat terkenal yang digunakan secara meluas oleh tentera dan organisasi pengganas di seluruh dunia. Ia terkenal dengan prestasi cemerlang dan kebolehpercayaan dan dianggap sebagai salah satu senapang serangan terbaik di dunia. Reka bentuk AK47 adalah ringkas dan praktikal, sesuai digunakan dalam pelbagai persekitaran yang keras. Ia menggunakan peluru berkaliber 7.62mm, yang mempunyai julat dan penembusan tinggi. AK47 murah untuk dikeluarkan dan mudah diselenggara dan dikendalikan, menjadikannya popular. Walaupun ia mempunyai beberapa batasan dalam reka bentuknya, ia masih merupakan senjata yang sangat boleh dipercayai dan berkesan. Sama ada untuk operasi ketenteraan atau pertahanan peribadi, AK47 adalah pilihan yang berkuasa. Senjata api paling klasik dalam perang balas sudah pasti AK47. Di pusat membeli-belah, harga jualan tetap AK47 ialah

Tatabahasa Kuil Java: Mulakan Ziarah ke Tatabahasa dan Buka Potensi Pengaturcaraan Anda Tatabahasa Kuil Java: Mulakan Ziarah ke Tatabahasa dan Buka Potensi Pengaturcaraan Anda Mar 30, 2024 pm 01:01 PM

Pengisytiharan pembolehubah menentukan nama pembolehubah, jenis dan skop. Java menyokong jenis primitif (int, double, boolean) dan rujukan (String, List). 2. Kawalan aliran Gunakan if/else, suis/case dan gelung (semasa, buat-sementara, untuk) untuk mengawal aliran program. Penyata bersyarat menyemak syarat, dan penyata cawangan melaksanakan blok kod yang berbeza berdasarkan syarat. 3. Array Array menyimpan koleksi elemen dari jenis yang sama. Tatasusunan diisytiharkan dengan jenis [] dan elemen boleh diakses oleh indeks. 4. Kelas dan Objek Kelas ialah cetak biru yang digunakan untuk mencipta objek dengan keadaan dan tingkah laku. Objek ialah contoh kelas tertentu dan mempunyai akses kepada kaedah ahli dan pembolehubah kelas itu. 5. Subkelas yang diwarisi mewarisi medan dan

Panduan praktikal untuk model memori Java: Bagaimana untuk mengelakkan perangkap biasa dalam pengaturcaraan serentak Panduan praktikal untuk model memori Java: Bagaimana untuk mengelakkan perangkap biasa dalam pengaturcaraan serentak Feb 19, 2024 pm 02:45 PM

Keterlihatan: Satu utas hanya boleh melihat pengubahsuaiannya sendiri kepada pembolehubah yang dikongsi, manakala pengubahsuaian kepada pembolehubah yang dikongsi oleh urutan lain memerlukan beberapa jenis mekanisme penyegerakan untuk dilihat. Atomicity: Operasi sama ada dilaksanakan sepenuhnya atau tidak dilaksanakan sama sekali, tanpa keadaan perantaraan. Keteraturan: Operasi benang pada pembolehubah yang dikongsi mesti dilakukan dalam susunan tertentu, walaupun dalam urutan yang berbeza. 2. berlaku-sebelum prinsip Prinsip berlaku-sebelum ialah salah satu peraturan teras JMM, yang mentakrifkan jujukan capaian pembolehubah yang dikongsi antara utas. Mengikut prinsip berlaku-sebelum, jika operasi Berlaku-sebelum operasi B yang lain, maka pengubahsuaian A bagi pembolehubah yang dikongsi pasti akan berlaku dalam B

See all articles