PHP

开源公司:Rasmus Lerdorf

作品详情

外文名
php、Hypertext Preprocessor[2]
展开
设计者
Rasmus Lerdorf
展开
别名
超文本预处理器
展开
开发商
THE PHP Group
展开
最近更新时间
2023年11月[4]
展开
软件授权
Creative Commons Attribution
展开
软件大小
16 至 26 MB
展开
编程范型
面向对象、命令式编程
展开
类别
开源脚本语言
展开
软件平台
Windows、Linux、Unix、macOS等[3]
展开
上线时间
1995年
展开
软件语言
PHP
展开
软件版本
php-8.2.6.tar.gz 
展开
最新版本
8.2.6
展开




1发展历程





  PHP原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"的缩写。注意不是“Hypertext Preprocessor”的缩写,这种将名称放到定义中的写法被称作递归缩写。PHP于19 94年由Rasmus Lerdorf创建,刚刚开始是Rasmus Lerdorf 为了要维护个人网页而制作的一个简单的用Perl语言编写的程序。这些工具程序用来显示 Rasmus Lerdorf 的个人履历,以及统计网页流量。后来又用C语言重新编写,包括可以访问数据库。他将这些程序和一些表单直译器整合起来,称为 PHP/FI。PHP/FI 可以和数据库连接,产生简单的动态网页程序。


  在1995年以Personal Home Page Tools (PHP Tools) 开始对外发表第一个版本,Lerdorf写了一些介绍此程序的文档。并且发布了PHP1.0!在这的版本中,提供了访客留言本、访客计数器等简单的功能。以后越来越多的网站使用了PHP,并且强烈要求增加一些特性。比如循环语句和数组变量等等;在新的成员加入开发行列之后,Rasmus Lerdorf 在1995年6月8日将 PHP/FI 公开发布,希望可以透过社群来加速程序开发与寻找错误。这个发布的版本命名为 PHP 2,已经有 PHP 的一些雏型,像是类似 Perl 的变量命名方式、表单处理功能、以及嵌入到 HTML 中执行的能力。程序语法上也类似 Perl,有较多的限制,不过更简单、更有弹性。PHP/FI加入了对MySQL的支持,从此建立了PHP在动态网页开发上的地位。到了1996年底,有15000个网站使用 PHP/FI。


  在1997年,任职于 Technion IIT公司的两个以色列程序设计师:Zeev Suraski 和 Andi Gutmans,重写了 PHP 的剖析器,成为 PHP 3 的基础。而 PHP 也在这个时候改称为PHP:Hypertext Preprocessor.[5]。经过几个月测试,开发团队在1997年11月发布了 PHP/FI 2。随后就开始 PHP 3 的开放测试,最后在1998年6月正式发布 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 发布后开始改写PHP 的核心,这个在1999年发布的剖析器称为 Zend Engine[7],他们也在以色列的 Ramat Gan 成立了 Zend Technologies 来管理 PHP 的开发。


  在2000年5月22日,以Zend Engine 1.0为基础的PHP 4正式发布,2004年7月13日则发布了PHP 5,PHP 5则使用了第二代的Zend Engine[5]。PHP包含了许多新特色,像是强化的面向对象功能、引入PDO(PHP Data Objects,一个存取数据库的延伸函数库)、以及许多效能上的增强。PHP 4已经不会继续更新,以鼓励用户转移到PHP 5。


  2008年PHP 5成为了PHP唯一的有在开发的PHP版本。将来的PHP 5.3将会加入Late static binding和一些其他的功能强化。PHP 6 的开发也正在进行中,主要的改进有移除register_globals、magic quotes 和 Safe mode的功能。


  PHP最新稳定版本:5.3.21(2013.1.17) [5]


  PHP最新发布版本:5.4.14(2013.4.11) [5]


PHP最新发布版本: 7.2.15 & 7.3.2 (2019年2月7日)[6]




框架介绍



  ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。


  





命名约定




  1.   类文件都是以“.class.php“为后缀,且类文件名只允许字母,使用驼峰法命名,并且首字母大写,例如:DbMysql.class.php或者dbMysql.class.php首单词小写其他单词首字母大写。类文件中有且只有一个与文件名同名的类。


  2.   配置和函数等其他类库文件之外的文件一般是分别以“.inc.php“和”.php“为后缀,且文件名命名使用小写字母和下划线的方式,多个单词之间以下划线分隔,例如config.inc.php , common.php,install_function.php。


  3.   确保文件的命名和调用大小写一致。


  4.   类名和文件名一致,且类名只允许字母,例如 UserAction类的文件命名是UserAction.class.php, InfoModel类的文件名是InfoModel.class.php。


  5.   控制器类以Action为后缀,例如 UserAction、InfoAction ,模型类以Model为后缀,例如UserModel、InfoModel ,其他类也分别以相应分类为后缀,例如Service 、Widget。


  6.   方法名只允许由字母组成,下划线是不允许的,首字母要小写,其后每个单词首字母要大写,即所谓的 “驼峰法命名” 规则,且越详细越好,应该能够描述清楚该方法的功能,例如switchModel、findPage。


  7.   属性的命名只允许由字母组成,下划线是不允许的。首字母要小写,其后每个单词首字母要大写,即所谓的 “驼峰法命名” 规则,例如tablePrefix、tableName。



  Php文件记事本编辑乱码问题


  一般情况下,记事本编辑器在对文件进行完编辑并保存之时,其默认编码为ANSI,中文。然则更多的时候,php在语言环境设置时语言多数为utf-8,直接保存并用于apache等http-server解析后就会出现乱码。


  为此,应该注意在用记事本编辑完后可将文件用“另存为”的方式对文件进行保存,并将“文件类型”选择“所有文件”,编码与文件指定语言编码一致即可。





2主要功能






语言解析


  PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。




开发工具



  Zend Studio是开发人员在使用PHP整个开发周期中的集成开发环境 (IDE)。


  eclipse for php


dreamweaver[7]


  NotePad++


  EclipsePHP Studio(php100改良的zend studio)


  NetBeans IDE


  phpDesigner


  Editplus





语言特性



  PHP的特性包括:


  PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。


  PHP安装它可以比 CGI或者Perl更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,


  PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;


  PHP具有非常强大的功能,所有的CGI的功能PHP都能实现,


  而且支持几乎所有流行的数据库以及操作系统。最重要的是PHP可以用C、C++进行程序的扩展!





语言优势



开放的源代码


  所有的PHP源代码事实上都可以得到。


PHP是免费的


  和其它技术相比,PHP本身免费且是开源代码。


php的快捷性


  程序开发快,运行快,技术本身学习快。嵌入于HTML:因为PHP可以被嵌入于HTML语言,它相对于其他语言。编辑简单,实用性强,更适合初学者。


跨平台性强


  由于PHP是运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS、Mac OS下。 [8]


效率高


  PHP消耗相当少的系统资源。


图像处理


  用PHP动态创建图像,PHP图像处理默认使用GD2。不过也可以配置为使用image magick进行图像处理。


面向对象


  在php4,php5 中,面向对象方面都有了很大的改进,php完全可以用来开发大型商业程序。


专业专注


  PHP支持脚本语言为主,同为类C语言。





技术应用



  1,伪静态


  2,静态页面生成


  3,数据库 缓存


  4,过程缓存


  5,div+cssw3c标准


  6,大负荷


  7,分布式


  8,flex


  9,桌面程序应用(不擅长)


  10,支持MVC模型


  11,Smarty模版引擎





学习过程和方法


   [9]PHP的语法类似于C,Perl,ASP或者JSP。对于那些对上述之一的语言较熟悉的人来说,PHP太简单了。相反的,如果你对PHP了解较多,那么你对于其他几种语言的学习都很简单了。你只需要很短的时间内将PHP的核心语言特点全部掌握,你可能已经非常了解HTML,甚至你已经知道怎样用编辑设计软件或者手工来制作好看的WEB站点。由于PHP代码能够无障碍的添加进你的站点,在你设计和维护站点的同时,你可以很轻松的加入PHP使得你的站点更加具有动态特性。




数据库连接


  PHP可以编译成具有与许多数据库相连接的函数。PHP与MySQL是绝佳的组合,如果再加上Apache服务器,就是相当完美的了。你还可以自己编写外围的函数取间接存取数据库。通过这样的途径当你更换使用的数据库时,可以轻松的更改编码以适应这样的变化。PHPLIB就是最常用的可以提供一般事务需要的一系列基库。




可扩展性


  就像前面说的那样,PHP已经进入了一个高速发展的时期。对于一个非程序员来说为PHP扩展附加功能可能会比较难,但是对于一个PHP程序员来说并不困难。




PHP面向对象


  PHP提供了类和对象。基于web的编程工作非常需要面向对象编程能力。




PHP可伸缩性


  传统上网页的交互作用是通过CGI来实现的。CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程。解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP就可以以这种方式安装,虽然很少有人愿意这样以CGI方式安装它。内嵌的PHP可以具有更高的可伸缩性。




3系列产品






PHP3介绍


  PHP3跟Apache服务器的紧密结合的特性; 加上它可以不断的更新及加入新的功能,而且几乎支持所有主流与非主流数据库。再以它能高速的执行效率,使得PHP在1999年中的使用站点已经超过了150000。加上它的源代码完全公开,在 Open Source意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新的活力。使得PHP无论在UNIX、LINUX或是Windows的平台上都可以有更多新的功能。它提供丰富的函数,使得在程序设计方面有着更好的支持。




PHP4介绍



  PHP4.0整个脚本程序的核心大幅更动,让程序的执行速度,满足更快的要求。在最佳化之后的效率,已较传统CGI或者ASP等程序有更好的表现。而且还有更强的新功能、更丰富的函数库。无论您接不接受,PHP 都将在 Web CGI 的领域上,掀起巅覆性的革命。对于一位专业的Web Master 而言,它将也是必修课程之一。


  PHP 4.0是更有效的,更可靠的动态Web页开发工具,在大多数情况运行比 PHP 3.0要快,其脚本描述更强大并且更复杂,最显著的特征是速率比的增加。PHP4.0这些优异的性能是PHP脚本引擎重新设计产生的结果:引擎由AndiGutmans和Zeev Suraski从底层全面重写。PHP4.0 脚本引擎 ——Zend引擎,使用了一种更有效的编译——执行方式,而不是PHP 3.0 采用的执行 ——当解析时模型。


  PHP4的优越性


  PHP4在3.0版的基础上增加或增强了许多有用的特征,主要如下:


  (1)别名:在PHP4中,可以利用引用为变量赋值,这给编程带来了很大的灵活性。


  (2)扩充了API模块:PHP 4.0 为扩展的 API 模块的提供了扩展PHP接口模块,它比旧的 API 版本显著地快。PHP 模块已有的及最常用的接口多数被转换到使用这个扩展的接口。


  (3)自动资源释放:PHP4增加了引用计数功能,这种新技术的引入使PHP4具有了自动内存管理功能,减轻了开发人员的负担。


  (4)布尔类型:PHP 4.0 支持布尔类型。


  (5)进程生成:在 UNIX 环境下的 PHP 4.0 提供了一个很智能和通用的生成进程,使用了一种名为基于automake/libtool的系统生成技术。


  (6)COM/DCOM 支持:PHP 4.0 提供 COM/DCOM 支持 ( 仅用于Windows 环境 ) 可以无缝地存取和访问 COM 对象。


  (7)与PHP 3.0 兼容性很好:PHP 4.0 是与 PHP 3.0 代码向后兼容性接近100%。由于 PHP 4 的改进的体系结构,两者有一些细微的差别,但是大多数人将可能永远不可能遇上这种情况。


  (8)配置:PHP4重新设计和增强了PHP.ini文件,这使得用PHP.ini来配置PHP显得极为容易,这个文件可以在运行时被Apache(unix系统)或由Windows 注册(Windows 环境)。


  (9)加密支持:PHP4实现了完整的加密,这些加密功能是一个完整的mycrypt库,并且 PHP 4.0 支持哈希函数。Blowfish,TripleDES,MD5,并且SHA1 也是可使用的一些加密算法。


  (10)类型检查:PHP 4.0 支持同一操作符用于评类型检查:===(3 等号运算符),为在两个值和其类型之间作检查。例如,'3' ===3 将视为假 ( 类型是不同的 ),而 3 ==3 ( 相等判断 ) 将视为真。


  (11)FTP 支持:PHP 4.0 支持 FTP。通常,你会为通过一个调制解调器连接下载一个大文件提供一个接口。然而,如果你确实有需要,可以使用PHP。


  (12)PHP4新增函数或功能增强函数:PHP 4.0 新增了许多函数,同时也将许多现有的函数功能进行了增强,以下是一些例子。array_count_values() eval() foreach() include() ob_end_clean() ob_end_flush() ob_get_contents() ob_start()strip_tags() unset()。


  (13)here打印:PHP 4.0 的Here打印是与Perl类似的,尽管完全不相同。Here是打印大容量文章的一个有用的方法,例如在HTML文件中,不会漏掉任何一个字符,例如目录标记。


  (14)HTTP Session fallback 系统:为 HTTP Session管理的一个 fallback 系统在 PHP 4.0被实现。缺省情况下,Session标识符由cookies存储。如果没有cookies支持或一项cookies任务失败,Session标识符自动被创建并在 URL 的查询字符串中被携带。


  (15)ISAPI 支持:PHP 4.0 能作为一个个性化的 ISAPI 模块作为IIS插件。这比 PHP 3.0 更有效,它作为一个外部的程序来运行。


  (16)内存:PHP 4.0 能更有效的使用内存,导致较少的内存占用消耗,这主要归功于引用计数技术的实现。⒄其他类成员函数:在 PHP 4.0 你能在成员函数本身的作用域或全局范围内调用其他类的成员函数。例如,你能用一个子函数覆盖父函数,并在子函数中调用父函数。


  (17)多维数组:在 PHP 4.0 ,利用GET,POST,Cookies的进行的数据传输支持多维数组。


  (18)个性化的 HTTPSession支持:HTTP Session处理,包括 fallback系统管理,在 PHP 4.0被它的新库函数实现。在版本 3.0 中处理Session要求使用 PHPLIB 和第三方的库函数,它比把Session直接地由 PHP 支持慢了许多。


  (19)个性化的 Java 支持:PHP 4.0 支持和java的交互。这种个性化的Java 支持为PHP 在 Java 对象上创建和使用方法提供一个简单并且有效的工具。


  (20)对象和数嵌套组:PHP 4.0 实现了功能更加强大的对象,移去了 PHP 3.0存在的种种句法限制。对象能在数组以内被嵌套并且反过来也如此,可以根据你的需要实现嵌套。


  (21)面向对象的编程:PHP 4.0 为面向对象的编程和构造类及对象提供扩展的功能和新特征。PHP4实现了对象重载,引用技术等新技术。


  (22)对象重载支持:对象重载语法允许第三方的基于面向对象的类库使用 PHP4 的面向对象的特征存取他们自身的功能。使用这个特征的一个 COM 模块已经被实现了。


  (23)输出缓冲支持:PHP 提供了一个输出缓冲函数集合。输出缓冲支持允许你写包裹函数功能压缩缓冲区。在 PHP4 的输出缓冲支持允许 HTML 头信息存放,无论 HTML的正文是否输出。头信息( (header(),content type,and cookies ) 不采用缓冲。


  (24)增加了PCRE库:PHP 4.0 包括一个 Perl 兼容的正则表达式(PCRE ) 库,和正常regex库一起与 PHP 绑定。split 和replace PCRE 功能被支持。PCRE 和 Perl 正规表达式之间有一些细微差别。


  (25)PHP.ini 文件:PHP.ini文件在 PHP4.0 被重新设计,使用的 PHP 的配置PHP.ini是更容易并且更有效的。全部文件能被Apache 在运行时间操作 ( 在 Apache环境 下 ) 或由 Windows 注册表 ( 在 Windows 下面 )。被加入PHP.ini文件的配置指令自动地在所有相关的模块中被支持。


  (26)引用计数:PHP 4.0 为系统中的每个数值提供了引用计数,包括资源。一旦一个资源不再被任何变量引用,它自动地被释放以节省内存资源。利用这个特征的最明显的例子一个内置SQL查询的循环语句。在PHP 3.0中 ,每次递归另外的 SQL 结果集合重复申请内存,直到脚本执行完毕,这些结果集合占用的内存才被释放。


  (27)支持引用:通过引用可以改变一个变量的值。


  (28)函数的运行时绑定:PHP 4.0 的运行时间绑定功能允许你在他们被声明以前调用,无论声明是否在代码以后或是在运行时间。


  (29)类的运行时信息:PHP 4.0 支持在运行时刻存取下列类信息:一个对象的类名,一个对象的父类的类名字,以及对象函数所在的名字。


  (30)服务器抽象层:为支持Web服务器提供了增强型 SAPI ( 服务器 API ) 接口,是 PHP 4.0 不可分的一部分。这个服务器抽象层,提供了通用的WEB服务器接口支持,支持多线程WEB服务器,为大多数的WEB服务器提供透明的支持,这些服务器包括 Apache,IIS ( ISAPI ),以及 AOL 服务器。


  (31)语法的点亮显示:PHP 4.0 语法的点亮显示允许开发者看见源代码而不是脚本,这个功能比PHP 3.0中的更有效。它跑得更快,更执行得更好,并且产生更紧凑的HTML代码。


  (32)由引用改变变量的值:PHP 4.0 由引用支持可变的赋值,“关联”的2个变量之中个的任何一个的值被改变,另外的变量的值同样被改变,这类似与C中的指针类型。


  (33)在引用字符串中的变量引用:PHP 4.0 增强了在引用字符串中的变量引用。





PHP5介绍



  PHP5在长时间的开发及多个预发布版本后,2004年7月13日,PHP5.0发布。该版本以Zend引擎Ⅱ为引擎,并且加入了新功能如PHP Data Objects(PDO)。PHP5.0版本强化更多的功能。首先,完全实现面向对象,提供名为 PHP兼容模式的功能。其次是XML功能,PHP5.0版本支持可直观地访问XML数据、名为SimpleXML的XML处理用界面。同时还强化了XMLWeb服务支持,而且标准支持SOAP扩展模块。数据库方面,PHP新版本提供旨在访问MySQL的新界面—— MySQL。除此前的界面外,还可以使用面向对象界面和预处理语句(Prepared Statement)等MySQL的新功能.另外,PHP5.0上还捆绑有小容量RDBMS-SQLite.


新的对象模式


  *构造函数和析构函数


  * 对象的引用


  * 对象的克隆


  * 对象中的私有、公共及受保护模式


  * 接口 (Interfaces)


  * 抽象类


  * __call


  * __set 和 __get


  * 静态成员


  构造函数和析构函数


  在 PHP4 中,当函数与对象同名时,这个函数将成为该对象的构造函数,并且在 PHP4 中没有析构函数的概念。


  在 PHP5 中,构造函数被统一命名为 __construct,并且引入了析构函数的概念,被统一命名为 __destruct。


  对象的引用


  在PHP4中,传递变量给一个函数或方法,实际是把这个变量做了一次复制,也就意味着你传给函数或方法的是这个变量的一个副本,除非你使用了引用符号“&;” 来声明是要做一个引用,而不是一个 Copy。在 PHP5中,对象总是以引用的形式存在的,对象中的赋值操作同样也都是一个引用操作。


  对象的克隆


  当一个对象始终以引用的形式来被调用时,如果我想得到该对象的一个副本,该怎么办呢?PHP5 提供了一个新的功能,就是对象的克隆,语法为 __clone。


  抽象


  抽象类不能被实例化。


  抽象类与其它类一样,允许定义变量及方法。


  抽象类同样可以定义一个抽象的方法,抽象类的方法不会被执行,不过将有可能会在其派生类中执行。


  __call


  PHP5 的对象新增了一个专用方法 __call(),这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在的方法,__call 方法将会被自动调用。


  __set 和 __get


  这是一个很棒的方法,__set 和 __get 方法可以用来捕获一个对象中不存在的变量和方法。


  类型指示


  在 PHP5 中,你可以在对象的方法中指明其参数必须为另一个对象的实例。


  静态成员


  静态成员和静态方法在面象对象编程的术语中被称作 “类方法(class methods)” 和 “类变量(class variables)”。


  “类方法” 在一个对象没有实例化前允许被调用。同样,“类变量” 在一个对象没有实例化前可以被独立操作控制(不需要用一个对象的方法来控制)。


异常处理


  异常处理是公认的处理程序错误的理想方法,在 Java 及 C 中都有这个概念,我们欣喜的看到,在 PHP5 已经加入了这方面的应用。你可以尝试使用 “try” 和 “catch” 来控制程序的错误。当有错误发生的时候,代码会把错误交给 “catch” 子句来处理,在 “catch” 子句中,你需要指明要把错误交给某个对象处理,这样做可以使代码结构看起来更清晰,因为我们可以把所有的错误信息交给一个对象来处理。


  自定义错误处理


  你可以很方便的用自定义的处理错误的代码来控制你的程序中的意外。你仅仅需要从异常类中派生出一个自己的错误控制类,在你自己的错误控制类中,你需要有一个构造函数和一个 getMessage 方法。


命名空间


  名称空间对类的分组或函数分组很有用。它可以把一些相关的类或函数给组合到一起,方便以后调用。


  例:名称空间


  



  注意你需要在何种情况下使用名称空间,在实际运用中,你可能会需要声明两个或多个名称一样的对象来做不同的事情,那么你就可以把他们分别放到不同的名称空间中去(但接口是要相同的)。


PHP5加密


  从PHP5.3开始支持ZendGuard加密方式,必须安装Zend Guard Loader,老的zend optimizer将不被支持。


  Linux安装Zend Guard Loader支持的过程:


  操作系统为CentOS5.5,PHP版本为5.3.8(CentOS5.5中的PHP默认版本较低,如果要升级到PHP最新版,可以使用remi的report源进行升级)。


  Windows 下面的 Zend Guard Loader 不支持php5.3.8 VC9 x86 Thread Safe而,php5.3.8 VC9 x86 Non Thread Safe 又不支持 apache。所以安装的话,就需要安装在iis或者和nginx搭配。


  1、下载最新的Linux操作系统系下的Zend Guard Loader。


  2、上传至Linux服务器并解压缩,注意阅读生成目录下的README文件。全文如下(添加必要的注释)。在/etc/php.d/目录下创建文件zend.ini,内容如下:


  zend_extension=/usr/lib64/php/modules/ZendGuardLoader.so


  注意路径一定要写上,刚开始没写路径,老是加载不上ZendGuardLoader.so,也可以直接将上面的配置写入/etc/php.ini文件中,效果一样。


  3、重启httpd服务:service httpd restart。


  4.输出<?php phpinfo(); ?>





PHP6设想



  支持Unicode


  支持Unicode是有其必然,虽然Unicode占用较多的空间,但Unicode带来的便利性,远超过占用空间的缺点,尤其在国际化的今天,硬件设备越来越强大,网速也大幅度的提升,这么一点小小的缺点是可以忽略的。另外一点,PHP也可以在.ini文件中设定是否开启支持Unicode。


  移除RegisterGlobals


  这是一个重要的决定,许多新进的PHP开发者会觉得RegisterGlobals蛮方便的,但是却忽略了RegisterGlobals会带来程序上安全性的隐患,大多数的主机上此项功能是关闭的,印象PHP4.3.x版开始时,此项默认设置值即是关闭状态,PHP6正式移除RegisterGlobals也代表着如果程序是由PHP3时代的产物,将完全无法使用,除了改写一途外,别无他法。相信PHP世界里,仍使用PHP3时代所产生的程序应该是少之又少。


  Magic Quotes 将消失


  Magic Quotes主要是自动转义需要转义的字符,此项功能移除也符合大多数PHP开发者的心声。


  1.   4.Safe Mode 取消


  老实说,这个模式不知道哪里不好,取消就取消吧,反正也用不到。


  'var' 别名为 'public'


  在类中的var声明变成public的别名,相信是为了兼容PHP5而作的决定,PHP6也可以称作为OO语言了。


  通过引用返回将出错


  透过引用返回编译器将会报错 例如$a =& new b()、function &c(),OO语言默认就是引用,所以不需要再使用&;了。


  zend.ze1 compatbility mode 将被移去


  Zend.ze1相容模式将被移去,PHP5是为兼容旧有PHP4,所以在.ini中可选择是否开启相容模式,原因在于PHP5使用的是第二代解析引擎,但是相容模式并不是百分之百能解析PHP4语法,所以旧时代的产物,移除。


  Freetype 1 and GD 1 support 将不见


  这两个是很久的Libs,所以不再支持,GD1早已被GD2取代了。


  dl() 被移到 SAPI 中


  dl()主要是让设计师加载extension Libs,被移到 SAPI 中。


  Register Long Array 去除


  从PHP5起默认是关闭,再PHP6中正式移除。


  一些Extension的变更


  例如 XMLReader 和 XMLWriter将不再是以Extension的方式出现,他们将被移入到PHP的核心之中,并且默认是开启,eregextension将被放入PECL,代表着它将被移出PHP核心,这也为了让路给新的正则表达式extension,此外,Fileinfoextension 也将被导入PHP的核心之中。


  APC将被导入核心


  这是一个提高PHP性能的功能,它将被放入PHP核心中,并且可以选择是否启用APC


  告别ASP风格的起始标签


  原来是为了取悦ASP开发者转向使用PHP,现今已经不再需要这种做法了


  windows环境下安装


  由于php是一个zip文件(非install版),安装较为简单


  解压就行.把解压的 php-5.2.1-Win32重命名为 php5.并复制到C盘目录下.即安装路径为 c:\php


  1 找到php目录下的 php.ini.recommended (或者php.ini-dist)文件,重命名为 php.ini


  并复制到系统盘的windows目录下(以c:\windows为例).


  2 再把php目录下的php5ts.dll,libmysql.dll复制到目录 c:\windows\system32下.


  3 把php\ext目录下的php_gd2.dll,php_mysql.dll,php_mbstring.dll文件复制到c:\windows\system32下


  注意:不要把 php_mysql.dll 和 php_mssql.dll 混淆


  如果没有加载 php_gd2.dll php将不能处理图像.没有加载php_mysql.dll php将不支持mysql函数库


  php_mbstring.dll在后面使用phpmyadmin时支持宽字符


  配置php并关联MySQL


  1 设置扩展路径


  查找 extension_dir 有这么一行


  extension_dir = "./"


  将此行改成


  extension_dir = "C:\php\ext"


  其中C:\php是你安装php的路径.路径不正确将无法加载dll


  (注意:有些php版本是 ;extension_dir = "./" 要把前面的分号去掉)


  2 分别查找


  ;extension=php_mbstring.dll


  ;extension=php_gd2.dll


  ;extension=php_mysql.dll


  把上面3项前面的分号去掉,这样apache启动时就可以加载这些dll了


  注意不要把 ;extension=php_mysql.dl 和 ;extension=php_mssql.dl 混淆


  当然前面我们也把这些dll复制到system32下了.(大家在安装的过程中都注意到如何把一些dll加载入来了.


  以后要加载一些dll,比如说php_mysqli.dll,也就懂得怎么加载了)


  3 设置会话保存路径


  查找session.save_path 有这么一行


  ; session.save_path = "N;/path"


  在此行后加入一行(注意是加入一行,不是加到后面)


  session.save_path = "C:\WINDOWS\Temp"


  保存到你的临时目录下,这里完全可以保存到windows临时目录Temp下


  4 是否显示错误 display_errors


  出于安全性考虑,display_errors 有些版本也默认为 Off.


  就是说在调试时,如果php代码有误,就只出现一个空白页.而不会显示出错原因和出错行数.


  这样调试起来将非常不便,建议根据自己需要修改


  查找


  display_errors = Off (注意不是 ; - display_errors = Off [Security])


  改成


  display_errors = On


  5 php5时差问题


  date("Y-m-d H:i:s");?>;时间相差八小时


  为什么呢?PHP5系列版本新增了时区设置,默认为格林威治时间,与中国所在的东8区正好相差8个小时


  查找date.timezone有这么一行


  ;date.timezone =


  将;去掉,改成


  date.timezone = PRC


  其中PRC:People's Republic of China中华人民共和国,


  PHP的文件上传问题


  文件上传成败关键的几点php.ini配置


  文件上传的程序没有错,但php的配置很可能导致文件不能上传成功.


  1.   一般的文件上传,除非文件很小.就像一个5M的文件,很可能要超过一分钟才能上传完.


  但在php中,默认的该页最久执行时间为 30 秒.就是说超过30秒,该脚本就停止执行.


  这就导致出现 无法打开网页的情况.这时我们可以修改 max_execution_time


  在php.ini里查找


  max_execution_time


  默认是30秒.改为


  max_execution_time = 0


  0表示没有限制


  另一种方法是可以在php程序中加入


  set_time_limit();


  来设定页面最久执行时间.


  set_time_limit(0);//0表示没有限制


  1.   修改 post_max_size 设定 POST 数据所允许的最大大小。此设定也影响到文件上传。


  php默认的post_max_size 为2M.如果 POST 数据尺寸大于 post_max_size $_POST 和 $_FILES superglobals 便会为空.


  查找 post_max_size .改为


  post_max_size = 150M


  1.   很多人都会改了第二步.但上传文件时最大仍然为 8M.


  为什么呢.我们还要改一个参数upload_max_filesize 表示所上传的文件的最大大小。


  查找upload_max_filesize,默认为8M改为


  upload_max_filesize = 100M


  另外要说明的是,post_max_size 大于 upload_max_filesize 为佳.


  四. active perl 需要安装到c:/perl


  五. ZendOptimizer 安装时把 apache 服务器关掉,在过程中要指定 apache 和 php 的安装路径一、





4操作指南





  PHP文件其实也就是个文本文件,只要是文本编辑工具都可打开PHP文件,如Windows自带的记事本、写字板、Notepad++、phpedit、UltraEdit、dreamweaver、VIM编辑器等等都可以打开。


  首先找到一个php文件。


  1、用记事本打开


  (1)鼠标右击php文件,在弹出来的列表中选择“打开(o)”。


  (2)在打开的方式的选项中选择“记事本”。


  (3)然后就可以在记事本中看到php的代码了。


  2、用Notepad++打开


  (1)鼠标php文件,在出现的列表中选择“Notepad++”。


  (2)然后可以看到在Notepad++中打开的php代码如下图所示,可以看到此时php代码显示不同颜色,这是Notepad++自带的高显亮。


  3、用UltraEdit打开


  用UltraEdit打开,可以看到代码显示的高显亮又不一样了,不同编辑器显示的高显亮不同,可以自己调节。[7]




参考手册



PHP函数完整参考手册:[10]


































































































序号分类描述
1Array 函数 
2Calendar 函数

日历扩展包含了简化不同日历格式间的转换的函数。

3Date/Time 函数

Date/Time 函数用于从 PHP 脚本运行的服务器上获取日期和时间并进行格式化。

4Directory 函数

Directory 函数用于获得关于目录及其内容的信息。

5Error/Logging 函数

Error/Logging 函数用于对错误进行处理和记录。

6
Filesystem 函数

Filesystem 函数用于访问和操作文件系统。

7Filter 函数

PHP 过滤器用于对来自非安全来源的数据(比如用户输入)进行验证和过滤。

8FTP 函数

FTP 函数通过文件传输协议 (FTP) 提供对文件服务器的客户端访问。

9HTTP 函数

HTTP 函数用于对由 Web 服务器发送到浏览器的信息进行操作。

10Libxml 函数

Libxml 函数和常量与 SimpleXML、XSLT 以及 DOM 函数一起使用。

11Mail 函数

mail() 函数用于从脚本中直接发送电子邮件。

12Math 函数

Math 函数能处理 integer 和 float 范围内的值。

13杂项函数

我们把不属于其他类别的函数归纳到杂项函数类别。

14MySQLi 函数

MySQLi 函数用于访问 MySQL 数据库服务器。

15SimpleXML 函数SimpleXML 扩展提供了一种获取 XML 元素的名称和文本的简单方式。
16String 函数 
17XML Parser 函数XML Parser 函数允许您创建 XML 解析器,并为 XML 事件定义句柄。
18Zip File 函数Zip File 函数允许您读取压缩文件。




免费安装



  PHP源代码包安装版:这个版本适合已经有自己独立的网站域名、网站空间的专业网站建设用户。使用方法依然其为简单,只需三步:


  第一、到官方网站:下载 PHP源代码包安装版最新版本,解压下载文件,将其中的全部内容上传到你的支持PHP的网站空间


  第二、改更文件属性,请将根目录下的以PHP为后轰名的文件和”/include/domain.php”和 “/attachments” 和 “/data”文件夹以及文件夹下所以的文件属性改成“可读”、“可写”、“可执行”,通常是“755”。


  第三、打开你的网站根目录,系统会自动运行setup安装程序,按提示点下一步操作即可。


  友情提示:当你下载我们的软件并看到这份说明时,则说明你一定是对企业网站建设有一定的需求或者你是一个网站建设技术学习者 。





Windows下



  软件需求


  Windows 2000 Professional ; Apache 1.3.19 (apache_1.3.19-win32-src-r2.msi) ; PHP 4.0.5 (php-4.0.5-Win32.zip) ; MySQL 3.23.38 (mysql-3.23.38-win.zip)





安装过程




  1.   将 Apache 1.3.19 安装到 C:\Web\apache\ 目录下。


  2.   将 PHP 4.0.5 解压到 C:\Web\php\ 目录下。


  3.   将 MySQL 3.23.38 安装到 C:\Web\mysql\ 目录下。


  4.   将 C:\web\php\php4ts.dll 文件拷贝到 C:\WINNT\system32\ 目录下。


  5.   将 C:\web\php\php.exel 文件拷贝到 C:\WINNT\ 目录下。


  6.   将 C:\web\php\php.ini-dist 文件拷贝到 C:\WINNT\ 目录下,并将php.ini-dist 更名为 php.ini。


  7.   运行 C:\Web\apache\Apache\Apache.exe-i –n


  8.   运行 C:\Web\mysql\bin\mysqld-nt.exe--install


  9.   编辑 C:\WINNT\php.ini



  找到 “extension_dir = ./ ” 字段,将其改为 extension_dir = "C:\myphp\php\extensions"。


  编辑 C:\Web\apache\Apache\conf\httpsd.conf


  找到“ #BindAddress*” 字段


  将其改为 BindAddress127.0.0.1。(如果主机有固定IP地址,此处改为主机IP地址。如 BindAddress 211.101.152.106),找到 “ServerName” 字段,将其改为 ServerName localhost。(如主机有固定主机名,此处改为主机的主机名。如ServerName bn001)。


  找到“ ScriptAlias /cgi-bin/ "C:/Web/apache/Apache/cgi-bin/" ” 字段,在其下面加入 ScriptAlias /php/ "C:/Web/php/"。找到 “# And for PHP 4.x,use: ” 字段,在其后面加入:


  AddType application/x-httpd-php


  Action Application/x-httpd-php "c:/Web/php/php.exe"


  找到“ #LoadModule usertrack_module modules/mod_usertrack so” 字段,LoadModule php4_module c:/web/php/sapi/php4apache.dll





UNIX下



  所需软件


  php-3.0.14-win32.zip;php-3.0.14-win32.zip;mysql-shareware-3.22.32-win.zip


  所有软件均安装在/export/home/guoj/下,也可在其他目录。


  安装mysql


  gzip -dc mysql-3.22.30.tar.gz | tar xvf-


  cd mysql-3.22.30


  ./configure -prefix= /export/home/guoj/mysql


  make


  make install


  scripts/mysql_install_db


  cd../mysql/bin


  bin/safe_mysqld & 安装php apache


  gzip -dc apache_1.3.11.tar.gz | tar xvf-


  gzip -dc php-3.0.11.tar.gz | tar xvf-


  cd apache_1.3.11


  ./configure -prefix= /export/home/guoj/www


  cd ../php-3.0.11


  ./configure -with-apache= /export/home/guoj/apache_1.3.11


  -with-mysql= /export/home/guoj/mysql -enable-track-vars


  make


  make install


  cd ../apache_1.3.11


  ./configure --prefix= /export/home/guoj/www


  --activate-module=src/modules/php3/libphp3.aP


  make


  make install


  cd ../php-3.0.11


  cd ../php3.ini-dist php3.ini


  vi php3.ini修改php3.ini


  doc_root=/export/home/guoj/www/htdocs/


  extension_dir=/export/home/guoj/php-3.0.11/


  extension=php3_mysql.dllcp php3.ini/usr/local/lib/php3.inivi ../www/conf/httpsd.conf


  加上以下几句:


  <Directory "/export/home/guoj/php-3.0.11/">


  Options FollowSymLinks


  AllowOverride None


  </Directory>../www/bin/apachectl start





5其他方面






数据库



  PHP 在数据库方面的丰富支持,也是它迅速走红的原因之一,它支持下列的数据库或是数据文件:


  · Adabas D


  · DBA


  · dBase


  · dbm


  · filePro


  · Informix


  · InterBase


  · mSQL


  · Microsoft SQL Server


  · MySQL


  · Solid


  · Sybase


  · ODBC


  · Oracle 8


  · Oracle


  · PostgreSQL


  而在 Internet 上它也支持了相当多的通讯协议 (protocol),包括了与电子邮件相关的 IMAP,POP3;网管系统 SNMP;网络新闻NNTP;帐号共用 NIS;全球信息网 HTTP 及 Apache 服务器;目录协议 LDAP 以及其它网络的相关函数。


  除此之外,用 PHP 写出来的 Web 后端 CGI 程序,可以很轻易的移植到不同的操作系统上。例如,先以 Linux 架的网站,在系统负荷过高时,可以快速地将整个系统移到 SUN 工作站上,不用重新编译 CGI 程序。面对快速发展的 Internet,这是长期规划的最好选择。





相关语法及概念



   php 支持八种原始类型。


  四种标量类型:


  boolean(布尔型)


  integer(整型)


  float(浮点型,也作“double”)


  string(字符串)


  两种复合类型:array(数组)object(对象)最后是两种特殊类型:resource(资源)NULL


  为了确保代码的易读性,本手册还介绍了一些伪类型:mixednumbercallback


  语法:


  语法有三种:


  //comment


  /* comment */


  # comment


  基本的 "Control Structures":


  * if ... else


  if (condition == true) ;


  * if ... else then


  if (condition == true)


  else if (condition2 == true) ;


  一个PHP实例:


  


    First program          

  php对面向对象的支持


  面向对象编程的概念:


  不同的作者之间说法可能不一样,但是一个OOP语言必须有以下几方面:


  抽象数据类型和信息封装


  继承


  多态


  在PHP中是通过类来完成封装的:


  <?php


  class Something {


  // 在OOP类中,通常第一个字符为大写


  var $x;


  function setX($v) {


  // 方法开始为小写单词,然后使用大写字母来分隔单词,例如getValueOfArea()


  $this->x=$v;


  }


  function getX() {


  return $this->x;


  }


  }


  当然你可以按自己的喜好进行定义,但最好保持一种标准,这样会更有效。数据成员在类中使用"var"声明来定义,在给数据成员赋值之前,它们是没有类型的。一个数据成员可以是一个整数,一个数组,一个相关数组(associative array)或者是一个对象。方法在类中被定义成函数形式,在方法中访问类成员变量时,你应该使用$this->name,否则对一个方法来说,它只能是局部变量。


  使用new操作符来创建一个对象:


  $obj=new Something;


  然后你可以使用成员函数通过:


  $obj->setX⑸;


  $see=$obj->getX();


  在这个例子中,setX成员函数将5赋值给对象的成员变量x(不是类的),然后getX返回它的值5。可以象:$obj->x=6那样通过类引用方式来存取数据成员,这不是一个很好的OOP习惯。我强烈建议通过方法来存取成员变量。如果你把成员变量看成是不可处理的,并且只通过对象句柄来使用方法,你将是一个好的OOP程序员。不幸的是,PHP不支持声明私有成员变量,所以不良代码在PHP中也是允许的。继承在PHP中很容易实现,只要使用extend关键字。


  


y=$v;  }    {   ->y;  }  }

  "Another"类的对象现在拥有了父类(Something)的全部的数据成员及方法,而且还加上了自己的数据成员和方法。


  你可以使用


  $obj2=new Another;


  $obj2->setX⑹;


  $obj2->setY⑺;


  PHP还不支持多重继承,所以你不能从两个或两个以上类派生出新的类来。你可以在派生类中重定义一个方法,如果我们在"Another"类中重定义了getX方法,我们就不能使 用"Something"中的getX方法了。如果你在派生类中声明了一个与基派同名的数据成员,那么当你处理它时, 它将“隐藏”基类的数据成员。


  你可以在你的类中定义构造函数。构造函数是一个与类名同名的方法,当你创建一个类的对象时会被调用,例如:


  


x=$y;  }    {  ->x=$v;  }    {   ->x;  }  }

  所以你可以创建一个对象,通过:


  $obj=new Something⑹;


  构造函数会自动地把6赋值给数据变量x。构造函数和方法都是普通的PHP函数,所以你可以使用缺省参数。


  function Something($x="3",$y="5")


  接着:


  $obj=new Something(); // x=3 and y=5


  $obj=new Something⑻; // x=8 and y=5


  $obj=new Something(8,9); // x=8 and y=9


  缺省参数使用C++的方式,所以你不能忽略Y的值,而给X一个缺省参数,参数是从左到右赋值的,如果传入的参数少于要求的参数时,其作的将使用缺省参数。


  当一个派生类的对象被创建时,只有它的构造函数被调用,父类的构造函数没被调用,如果你想调用基类的构造函数,你必须要在派生类的构造函数中显示调用。可以这样做是因为在派生类中所有父类的方法都是可用的。


  <?php


  function Another() {


  $this->y=5;


  $this->Something();


  //显示调用基类构造函数


  }


  OOP的一个很好的机制是使用抽象类。抽象类是不能实例化,只能提供给派生类一个接口。设计者通常使用抽象类来强迫程序员从基类派生,这样可以确保新的类包含一些期待的功能。在PHP中没有标准的方法,但是:如果你需要这个特性,可以通过定义基类,并在它的构造函数后加上"die" 的调用,这样就可以保证基类是不可实例化的,现在在每一个方法(接口)后面加上"die" 语句,所以,如果一个程序员在派生类中没有覆盖方法,将引发一个错误。而且因为PHP 是无类型的,你可能需要确认一个对象是来自于你的基类的派生类,那么在基类中增加一个方法来实义类的身份(返回某种标识id),并且在你接收到一个对象参数时校验这个值。当然,如果一个不好的邪恶程序员在派生类中覆盖了这个方法,这种方法就不起作用了,不过一般问题多在懒惰的程序员身上,而不是邪恶的程序员。


  当然,能够让基类对程序员无法看到是很好的,只要将接口打印出来做他们的工作就可以了。在PHP中没有析构函数。


  重载(与覆盖不同)在PHP中不支持。在OOP中,你可以重载一个方法来实现两个或重多的方法具有相同的名字,但是有不同数量或类型的参数(这要看语言)。PHP 是一种松散类型的语言,所以通过类型重载不起作用,然而通过参数的个数不同来重载也不起作用。


  有时在OOP中重载构造函数非常好,这样你可以通过不同的方法创建对象(传递不同数量的参数)。在PHP中实现它的技巧是:


  


$name();  

  有时这个非常好用。





多态



  多态是对象的一种能力,它可以在运行时刻根据传递的对象参数,决定调用哪一个对象的方法。例如,如果你有一个figure的类,它定义了一个draw的方法。并且派生了circle和rectangle 类,在派生类中你覆盖了draw方法,你可能还有一个函数,它希望使用一个参数x,并且可以调用$x->draw()。如果你有多态性,调用哪个draw方法就依赖于你传递给这个函数的对象类型。


  多态性在象PHP这样的解释语言(想象一下一个C++编译器生成这样的代码,你应该调用哪一个方法?你也不知道你拥有的对象是什么类型的,好,这不是重点)是非常容易和自然的。所以PHP当然支持多态性。


  <?php


  function niceDrawing($x) {


  //假设这是Board类的一个方法


  $x->draw();


  }


  $obj=new Circle(3,187);


  $obj2=new Rectangle(4,5);


  $board->niceDrawing($obj);


  //将调用Circle的draw方法


  $board->niceDrawing($obj2);


  //将调用Rectangle的draw方法


  用PHP进行面向对象编程


  一些"纯化论者(purists)"可能会说PHP不是一个真正的面向对象的语言,这是事实。PHP 是一个混合型语言,你可以使用OOP,也可以使用传统的过程化编程。然而,对于大型项目,你可能想/需要在PHP 中使用纯的OOP去声明类,而且在你的项目只用对象和类。


  随着项目越来越大,使用OOP可能会有帮助,OOP代码很容易维护,容易理解和重用。这些就是软件工程的基础。在基于web的项目中应用这些概念就成为将来网站成功的关键。





高级OOP技术



  在看过基本的OOP概念后,我就可以向你展示更高级的技术:


  序列化(Serializing)


  PHP不支持永久对象,在OOP中永久对象是可以在多个应用的引用中保持状态和功能的对象,这意味着拥有将对象保存到一个文件或数据库中的能力,而且可以在以后装入对象。这就是所谓的序列化机制。PHP 拥有序列化方法,它可以通过对象进行调用,序列化方法可以返回对象的字符串表示。然而,序列化只保存了对象的成员数据而不包话方法。


  在PHP4中,如果你将对象序列化到字符串$s中,然后释放对象,接着反序列化对象到$obj,你可以继续使用对象的方法!我不建议这样去做,因为(a)文档中没有保证这种行为在以后的版本中仍然可以使用。(b) 这个可能导致一种误解,在你把一个序列化后的版本保存到磁盘并退出脚本时。当以后运行这个脚本时,你不能期待着在反序列化一个对象时,对象的方法也会在那里,因为字符串表示根本就不包括方法。


  总而言之,PHP 进行序列化对于保存对象的成员变量非常有用。(你也可以将相关数组和数组序列化到一个文件中)。


  例子 :


  <?php


  $obj=new Classfoo();


  $str=serialize($obj);


  //保存$str到磁盘上


  //几个月以后


  //从磁盘中装入str


  $obj2=unserialize($str)


  你恢复了成员数据,但是不包括方法(根据文档所说)。这导致了只能通过类似于使用$obj2->x来存取成员变量(你没有别的方法!)的唯一办法,所以不要在家里试它。


  有一些办法可以解决这个问题,我把它留着,因为对这篇简洁的文章来说,他们太不好。我会很高兴地欢迎在PHP的后续版本中有全序列化的特性。


  使用类进行数据存储PHP和OOP一件非常好的事情就是,你可以很容易地定义一个类来操作某件事情,并且无论何时你想用的时候都可以调用相应的类。假设你有一个HTML表单,用户可以通过选择产品ID号来选择一个产品。在数据库中有产品的信息,你想把产品显示出来,显示它的价格等等。你拥有不同类型的产品,并且同一个动作可能对不同的产品具有不同的意思。例如,显示一个声音可能意味着播放它,但是对于其它种类的产品可能意味着显示一个存在数据库中的图片。你可以使用OOP或PHP来减少编码并提高质量:


  定义一个产品的类,定义它应该有的方法(例如:显示),然后定义对每一种类型的产品的类,从产品类派后出来(SoundItem类,ViewableItem类,等等),覆盖在产品类中的方法,使它们按你的想法动作。


  根据数据库中每一种产品的类型(type)字段给类命名,一个典型的产品表可能有(id,type,price,description,等等字段)...然后在处理脚本中,你可以从数据库中取出type值,然后实例化一个名为type的对象:


  <?php


  $obj=new $type();


  $obj->action();


  这是PHP的一个非常好的特性,你可以不用考虑对象的类型,调用$obj的显示方法或其它的方法。使用这个技术,你不需要修改脚本去增加一个新类型的对象,只是增加一个处理它的类。


  这个功能很强大,只要定义方法,而不去考虑所有对象的类型,在不同的类中按不同的方法实现它们,然后在主脚本中对任意对象使用它们,没有if...else,也不需要两个程序员,只有高兴。


  你同意编程是容易的,维护是便宜的,可重用是真的吗?


  如果你管理一组程序员,分配工作就是很简单的了,每个人可能负责一个类型的对象和处理它的类。


  可以通过这个技术实现国际化,根据用户所选的语言字段应用相应的类就可以了,等等。


  拷贝和克隆


  当你创建一个$obj的对象时,你可以通过$obj2=$obj来拷贝对象,新的对象是$obj的一个拷贝(不是一个引用),所以它具有$obj在当时的状态。有时候,你不想这样,你只是想生成一个象obj类一样的一个新的对象,可以通过使用new语句来调用类的构造函数。在PHP中也可以通过序列化,和一个基类来实现,但所有的其它类都要从基类派生出来。


  进入危险区域


  当你序列化一个对象,你会得到某种格式的字符串,如果你感兴趣,你可以调究它,其中,字符串中有类的名字(太好了!),你可以把它取出来,象:


  


();

  你所得到的是一个新的Something类的对象,它同使用new方法,调用构造函数创建出的对象一样。我不知道这个对你是否有用,但是Universe类可以知道派生类的名字是一个好的经验。想象是唯一的限制。


  模板引擎 


  Smarty


  Smarty的特点是将模板编译成PHP脚本,然后执行这些脚本。很快,非常灵活。


  Heyes Template Class


  一个非常容易使用,但功能强大并且快速的模板引擎,它帮助你把页面布局和设计从代码中分离。


  FastTemplate


  一个简单的变量插值模板类,它分析你的模板,把变量的值从HTML代码中分离处理。


  ShellPage


  一个简单易用的类,可以让你的整个网站布局基于模板文件,修改模板就能改变整个站点。


  STP Simple Template Parser


  一个简单、轻量级并且易于使用的模板分析类。它可以从多个模板中组装一个页面,把结果页面输出到浏览器或者文件系统。


  OO Template Class


  一个你可以用在自己程序中的面向对象的模板类。


  SimpleTemplate


  一个可以创建和结构化网站的模板引擎。它可以解析和编译模板。


  bTemplate


  短小但是快速的模板类,允许你把PHP逻辑代码从HTML修饰代码中分离。


  Savant


  一个强大且轻量级的PEAR兼容模板系统。它是非编译型的,使用PHP语言本身做为它的模板语言。


  ETS - easy template system


  可以使用完全相同数据重组模板的模板系统。


  EasyTemplatePHP


  适用于你的站点的一个简单但是强大的模板系统。


  vlibTemplate


  一个快速、全能的模板系统,它包含一个缓存和调试类。


  AvanTemplate


  多字节安全的模板引擎,占用很少系统资源。它支持变量替换,内容块可以设置显示或隐藏。


  Grafx Software’s Fast Template


  一个修改版本的Fast Template系统,它包括缓存功能,调试控制台以及沉默去除为赋值块。


  TemplatePower


  一个快速、简单、功能强大的模板类。主要功能有嵌套的动态块支持,块/文件包含支持以及显示/隐藏未赋值的变量。


  TagTemplate


  这个库的功能被设计来使用模板文件,同时允许你从HTML文件检索信息。


  htmltmpl: templating engine


  一个适用于Python和PHP的模板引擎。它面向希望在项目中分离代码和设计的web应用开发人员。


  PHP Class for Parsing Dreamweaver templates


  一个分析Dreamweaver模板的简单类,被用于Gallery 2 和WordPress的自定义模块中。


  MiniTemplator (Template Engine)


  针对HTML文件的一个紧凑型模板引擎。对于模板变量和块定义它具有简单的语法。其中块可以嵌套。


  Layout Solution


  简化网站开发和维护。它拥有常用的变量和页面元素使你不需要重复做页面布局工作。


  Cached Fast Template


  它已经纳入 FastTemplate ,允许你缓存模板文件,甚至可以在分离的块内容上缓存不同的规格。


  TinyButStrong


  一个支持MySQL,Odbc,Sql-Server和ADODB的模板引擎。它包含7个方法和两个属性。


  Brian Lozier’s php based template engine


  只有2K大小,非常快并且是面向对象设计。


  WACT


  一个从设计中分离代码的模板引擎。


  PHPTAL


  一个PHP下面的XML/XHTML模板库。


  Rong_View_Wudimei


  一个php下类似于Smarty的国产模板引擎。





6认证级别





  

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
案例
苏州博物馆的会员系统,面向苏州博物馆的会员群体。 使用LNMP架构部署了后台系统及接口、前台使用Hbuilder开发具有便捷性的微信小程序 独自负责后台管理平台的前后端开发、前台小程序主开发,实现博物馆会员包括闸机检票、缴费退款、活动预约,票务预约、会员券、积分业务以及馆内的附加功能使用(如第三方讲解机、AR眼镜、管家婆商户、寄存等),因实现业务过程需要对接大量第三方的服务商,所以也锻炼了个人的技术解析以及沟通能力。因涉及保密协议,无法提供太多实际展示以及资源,价格方面不便透露。
服务内容全部包含: 社交聊天IM源码 前端开发语言:VUE( 安卓,IOS,WEB为一套前端代码) 服务器端开发语言: PHP+WebSocket 带部署教程。 后台地址 http://imadmin.hnscfkj.com/admin_login 账户 admin 密码 123456 前端地址 http://imchat.hnscfkj.com/ 测试账号1: qq81317 a123456 测试账号2: jhw001 a123456
110vuemysqluniapp社交
面向内部用户的积分兑换商城,里面包括商品管理模块(多sku),支付模块(微信,支付宝,积分),优惠券(满减,满折,几件几折等),物流模块(运费模板,运费模板条件)等 相比于市面上更稳定,更加自定义化,8年PHP开发经验,为人诚信可靠,有活找我就对了,包稳的
面向手机号注册用户,通过手机号注册加好友实时聊天,可以发送时间、位置信息等约定线下见面 系统采用thinkphp框架,通过websocket 协议实现即时通信 前端采用jquery html5等技术,数据库采用mysql
项目描述:是上面项目的通用后台,对上面项目的数据进行管理(增删改查),通过数据驱动视图,适应移动 端,产品订单和商品等用户信息使用了关联查询和软删除,封装了每个项目的管理功能为单独模块,设置了表 格枚举字段的显示方式,具有信息搜索功能、信息删除到回收站、批量操作数据丶还原以及真删除。 技术要点: 1、根据各个模块自定义菜单规则。设置表格枚举字段和普通字段的不同显示方式,表格可设置排序字段。 2、使用了 fastadmin 表格中的 dialog 事件以及 click 事件弹出弹窗展示用户数据。 3、通过事件监听调用 Layer.comfirm 丶 Fast.open.api、Layer.ope
当前共3688个项目

评论