首页 后端开发 php教程 class.rFastTemplate.php一_PHP教程

class.rFastTemplate.php一_PHP教程

Jul 13, 2016 pm 05:24 PM
multi

// 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...
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

kvr800d2n6可与DDR3兼容吗?(kvr800d2n6是否提供4GB版本) kvr800d2n6可与DDR3兼容吗?(kvr800d2n6是否提供4GB版本) Jan 09, 2024 pm 10:33 PM

kvr800d2n6能和ddr3一起用吗不能。1.因为kvr800d2n6是DDR2类型的内存条,而DDR3则是另一种类型的内存条,两者并不兼容。2.虽然DDR2和DDR3的插槽形状相同,但是在电压、时序、传输速率等方面存在差异,因此不同类型的内存条不能互通。kvr800d2n6是几代内存条重新写内容时,需要将语言改为中文,并且不改变原本的意思kvr800为内存重新写内容时,需要将语言改为中文,并且不改变原本的意思(DDR2),内存主频是800mhz。kvr800d2n62g是金士顿KVR800

Python Pandas 实战演练,数据处理小白的快速进阶! Python Pandas 实战演练,数据处理小白的快速进阶! Mar 20, 2024 pm 10:21 PM

使用read_csv()读取CSV文件:df=pd.read_csv("data.csv")处理缺失值:移除缺失值:df=df.dropna()填充缺失值:df["column_name"].fillna(value)转换数据类型:df["column_name"]=df["column_name"].astype(dtype)排序和分组:排序:df.sort_values(by="column_name")分组:groupby_object=df.groupby(by="column_name

MULTI是什么币种 有什么优点 MULTI是什么币种 有什么优点 Jan 31, 2024 pm 04:23 PM

MULTI币是一种去中心化的数字货币,它基于智能合约技术构建,旨在提供快速、便捷、低成本的资产转移和交换服务。其优点:1、去中心化;2、跨境支付;3、低成本;4、隐私保护;5、全球性。

PHP PDO高级技巧:使用存储过程和事务处理 PHP PDO高级技巧:使用存储过程和事务处理 Feb 20, 2024 am 10:01 AM

存储过程是预先编译并存储在数据库服务器上的sql语句。当需要执行存储过程时,只需要调用存储过程的名字即可,而不需要重新编写SQL语句。存储过程可以提高代码的可读性和效率,尤其是在需要执行复杂或重复的SQL语句时。1.创建存储过程CREATEPROCEDUREget_customer_by_id(INcustomer_idINT)BEGINSELECT*FROMcustomersWHEREcustomer_id=customer_id;END2.调用存储过程$stmt=$pdo->prepare(

成为 Java 异常处理的大师:掌控代码中的错误 成为 Java 异常处理的大师:掌控代码中的错误 Mar 24, 2024 pm 04:06 PM

Java的异常处理体系遵循一个层次结构,从最通用的Throwable类到更具体的子类,例如Exception和Error。了解这个层次结构至关重要,因为它决定了异常的处理方式和影响范围。二、掌握异常传播机制异常在程序中传播时,它会沿调用栈向上移动。如果未在代码中处理异常,它将被传播到调用它的方法,依此类推。掌握异常传播机制对于确保异常得到适当处理至关重要。三、使用try-catch-finally块try-catch-finally块是Java中处理异常的首选机制。try块包含需要执行的代码,而

逆战哪把ak最好(逆战ak排行) 逆战哪把ak最好(逆战ak排行) Jan 07, 2024 pm 06:34 PM

逆战哪把ak最好一:AK47是一款非常著名的步枪,被广泛使用于世界各地的军队和恐怖组织。它以其出色的性能和可靠性而闻名,被誉为世界上最好的突击步枪之一。AK47的设计简单而实用,适合在各种恶劣环境下使用。它采用了7.62毫米口径的弹药,具有较高的射程和穿透力。AK47的制造成本低廉,易于维护和操作,因此广受欢迎。尽管它在设计上存在一些局限性,但它仍然是一把非常可靠和有效的武器。无论是军事行动还是个人防卫,AK47都是一个强大的选择。逆战中最经典的枪械无疑是AK47。在商城中,AK47的永久售价为

Java 语法之神殿:踏上语法朝圣之路,解锁编程潜力 Java 语法之神殿:踏上语法朝圣之路,解锁编程潜力 Mar 30, 2024 pm 01:01 PM

变量声明确定变量名称、类型和作用域。Java支持原始(int、double、boolean)和引用(String、List)类型。二、控制流使用if/else、switch/case和循环(while、do-while、for)控制程序流。条件语句检查条件,分支语句根据条件执行不同的代码块。三、数组数组存储相同类型元素的集合。数组用类型[]声明,可以通过索引访问元素。四、类和对象类是蓝图,用于创建具有状态和行为的对象。对象是特定类的实例,可以访问该类的成员方法和变量。五、继承子类从父类继承字段和

Java 内存模型实战指南:如何避免并发编程中的常见陷阱 Java 内存模型实战指南:如何避免并发编程中的常见陷阱 Feb 19, 2024 pm 02:45 PM

可见性:线程只能看到自己对共享变量所做的修改,而其他线程对共享变量的修改则需要通过某种同步机制才能被看到。原子性:一个操作要么完整执行,要么根本不执行,没有中间状态。有序性:线程对共享变量的操作必须按照一定的顺序执行,即使在不同的线程中也是如此。二、happens-before原则happens-before原则是JMM的核心规则之一,它定义了线程之间共享变量的访问顺序。根据happens-before原则,如果一个操作Ahappens-before另一个操作B,那么A对共享变量的修改一定会在B

See all articles