❶ php是什么意思
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。
它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多。
PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
开发工具:
集成开发环境是一种集成了软件开发过程中所需主要工具的集成开发环境,其功能包括但不仅限于代码高亮、代码补全、调试、构建、版本控制等。一些常见的PHP IDEs如下:
1、Zend Studio:商业版,Zend官方出品,基于eclipse
2、Eclipsewith PDT:免费
3、Coda:商业版,针对Mac用户
4、NetBeans:免费,功能强大
5、PHP Storm:商业版
6、AptanaStudio:免费
7、PhpEd:商业版
8、KomodoIDE/Edit:IDE为商业版,Edit可免费使用
9、Adobe Dreamweaver:商业版
除去集成开发环境,具备代码高亮功能的常见文本编辑器因其轻巧灵活也常被选作开发工具,例如:Notepad++、Editplus、SublimeText、Everedit(国人开发)等等。
PHP的特性包括:
1、PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。
2、PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比,
PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;
PHP具有非常强大的功能,所有的CGI的功能PHP都能实现。
3、PHP支持几乎所有流行的数据库以及操作系统。
4、最重要的是PHP可以用C、C++进行程序的扩展。
PHP优势:
1、开放源代码
所有的PHP源代码事实上都可以得到。
2、免费性
和其它技术相比,PHP本身免费且是开源代码。
3、快捷性
程序开发快,运行快,技术本身学习快。嵌入于HTML:因为PHP可以被嵌入于HTML语言,它相对于其他语言。编辑简单,实用性强,更适合初学者。
4、跨平台性强
由于PHP是运行在服务器端的脚本,可以运行在UNIX、linux、WINDOWS、Mac OS、Android等平台
5、效率高
PHP消耗相当少的系统资源。
6、图像处理
用PHP动态创建图像,PHP图像处理默认使用GD2。且也可以配置为使用image magick进行图像处理。
7、面向对象
在php4,php5 中,面向对象方面都有了很大的改进,php完全可以用来开发大型商业程序。
8、专业专注
PHP支持脚本语言为主,同为类C语言。
技术应用:
1、伪静态
2、静态页面生成
3、数据库缓存
4、过程缓存
5、div+cssw3c标准
6、大负荷
7、分布式
8、flex
9、桌面程序应用(不擅长)
10、支持MVC模型
11、Smarty模版引擎
网络-PHP (超文本预处理器)
❷ PHP如何做好最基础的安全防范
PHP如何做好最基础的安全防范
php给了开发者极大型核的灵活性,但是这也为茄租没安全问题带来了潜在的隐患,PHP如何做好最基础的安全防范呢?下面我为大家解答一下,希望能帮到您!
当开发一个互联网服务的时候,必须时刻牢记安全观念,并在开发的代码中体现。PHP脚本语言对安全问题并不关心,特别是对大多数没有经验的开发者来说。每当你讲任何涉及到钱财事务等交易问题时,需要特别注意安全问题的考虑,例如颤纳开发一个论坛或者是一个购物车等。
安全保护一般性要点
不相信表单
对于一般的Javascript前台验证,由于无法得知用户的行为,例如关闭了浏览器的javascript引擎,这样通过POST恶意数据到服务器。需要在服务器端进行验证,对每个php脚本验证传递到的数据,防止XSS攻击和SQL注入。
不相信用户
要假设你的网站接收的每一条数据都是存在恶意代码的,存在隐藏的威胁,要对每一条数据都进行清理
关闭全局变量
在php.ini文件中进行以下配置:
register_globals = Off
如果这个配置选项打开之后,会出现很大的安全隐患。例如有一个process.php的脚本文件,会将接收到的数据插入到数据库,接收用户输入数据的表单可能如下:
< input name="username" type ="text" size = "15" maxlength = "64" >
这样,当提交数据到process.php之后,php会注册一个$username变量,将这个变量数据提交到process.php,同时对于任何POST或GET请求参数,都会设置这样的变量。如果不是显示进行初始化那么就会出现下面的问题:
<?php
// Define $authorized = true only if user is authenticated
if
(authenticated_user()) {
$authorized = true;
}
?>
此处,假设authenticated_user函数就是判断$authorized变量的值,如果开启了register_globals配置,那么任何用户都可以发送一个请求,来设置$authorized变量的值为任意值从而就能绕过这个验证。所有的这些提交数据都应该通过PHP预定义内置的全局数组来获取,包括$_POST、$_GET、$_FILES、$_SERVER、$_REQUEST等,其中$_REQUEST是一个$_GET/$_POST/$_COOKIE三个数组的联合变量,默认的顺序是$_COOKIE、$_POST、$_GET。
推荐的安全配置选项
error_reporting设置为Off:不要暴露错误信息给用户,开发的时候可以设置为ON
safe_mode设置为Off
register_globals设置为Off
将以下函数禁用:system、exec、passthru、shell_exec、proc_open、popen
open_basedir设置为 /tmp ,这样可以让session信息有存储权限,同时设置单独的网站根目录expose_php设置为Offallow_url_fopen设置为Offallow_url_include设置为Off
SQL注入攻击
对于操作数据库的SQL语句,需要特别注意安全性,因为用户可能输入特定语句使得原有的SQL语句改变了功能。类似下面的例子:
$sql ="select * from pinfo where proct = '$proct'";
此时如果用户输入的$proct参数为:'39'; DROP pinfo; SELECT 'FOO
那么最终SQL语句就变成了如下的`样子:
select proct from pinfo where proct = '39';
DROP pinfo;
SELECT 'FOO'
这样就会变成三条SQL语句,会造成pinfo表被删除,这样会造成严重的后果。这个问题可以简单的使用PHP的内置函数解决:
$sql = 'Select * from pinfo where proct = '"' mysql_real_escape_string($proct) . '"';
防止SQL注入攻击需要做好两件事:对输入的参数总是进行类型验证对单引号、双引号、反引号等特殊字符总是使用mysql_real_escape_string函数进行转义但是,这里根据开发经验,不要开启php的Magic Quotes,这个特性在php6中已经废除,总是自己在需要的时候进行转义。
防止基本的XSS攻击
XSS攻击不像其他攻击,这种攻击在客户端进行,最基本的XSS工具就是防止一段javascript脚本在用户待提交的表单页面,将用户提交的数据和cookie偷取过来。XSS工具比SQL注入更加难以防护,各大公司网站都被XSS攻击过,虽然这种攻击与php语言无关,但可以使用php来筛选用户数据达到保护用户数据的目的,这里主要使用的是对用户的数据进行过滤,一般过滤掉HTML标签,特别是a标签。下面是一个普通的过滤方法:
function transform_HTML( $string , $length null) { // Helps prevent XSS attacks
// Remove dead space.
$string = trim( $string );
// Prevent potential Unicode codec problems.
$string = utf8_decode( $string );
// HTMLize HTML-specific characters.
$string = htmlentities( $string , ENT_NOQUOTES);
$string = str_replace ( "#" , "#" , $string );
$string = str_replace ( "%" , "%" , $string );
$length = intval ( $length );
if ( $length > 0) {
$string = substr ( $string , 0, $length );
}return $string ;
}
这个函数将HTML的特殊字符转换为了HTML实体,浏览器在渲染这段文本的时候以纯文本形式显示。如bold会被显示为: BoldText 上述函数的核心就是htmlentities函数,这个函数将html特殊标签转换为html实体字符,这样可以过滤大部分的XSS攻击。但是对于有经验的XSS攻击者,有更加巧妙的办法进行攻击:将他们的恶意代码使用十六进制或者utf-8编码,而不是普通的ASCII文本,例如可以使用下面的方式进行:
这样浏览器渲染的结果其实是:
< a href = "http://host/a.php?variable=" >
< SCRIPT >Dosomethingmalicious
这样就达到了攻击的目的。为了防止这种情况,需要在transform_HTML函数的基础上再将#和%转换为他们对应的实体符号,同时加上了$length参数来限制提交的数据的最大长度。
使用SafeHTML防止XSS攻击
上述关于XSS攻击的防护非常简单,但是不包含用户的所有标记,同时有上百种绕过过滤函数提交javascript代码的方法,也没有办法能完全阻止这个情况。目前,没有一个单一的脚本能保证不被攻击突破,但是总有相对来说防护程度更好的。一共有两个安全防护的方式:白名单和黑名单。其中白名单更加简单和有效。一种白名单解决方案就是SafeHTML,它足够智能能够识别有效的HTML,然后就可以去除任何危险的标签。这个需要基于HTMLSax包来进行解析。安装使用SafeHTML的方法:
1、前往http://pixel-apes.com/safehtml/?page=safehtml 下载最新的SafeHTML
2、将文件放入服务器的classes 目录,这个目录包含所有的SafeHTML和HTMLSax库
3、在自己的脚本中包含SafeHTML类文件
4、建立一个SafeHTML对象
5、使用parse方法进行过滤
<?php/* If you're storing the HTMLSax3.php in the /classes directory, along
with the safehtml.php script, define XML_HTMLSAX3 as a null string. */define(XML_HTMLSAX3, '' );// Include the class file.require_once ( 'classes/safehtml.php' );
// Define some sample bad code.
$data = This data would raise an alert
" ;// Create a safehtml object.$safehtml = new safehtml();// Parse and sanitize the data.$safe_data = $safehtml ->parse( $data );// Display result. echo 'The sanitized data is ' . $safe_data ;
?>
SafeHTML并不能完全防止XSS攻击,只是一个相对复杂的脚本来检验的方式。
使用单向HASH加密方式来保护数据
单向hash加密保证对每个用户的密码都是唯一的,而且不能被破译的,只有最终用户知道密码,系统也是不知道原始密码的。这样的一个好处是在系统被攻击后攻击者也无法知道原始密码数据。加密和Hash是不同的两个过程。与加密不同,Hash是无法被解密的,是单向的;同时两个不同的字符串可能会得到同一个hash值,并不能保证hash值的唯一性。MD5函数处理过的hash值基本不能被破解,但是总是有可能性的,而且网上也有MD5的hash字典。
使用mcrypt加密数据MD5 hash函数可以在可读的表单中显示数据,但是对于存储用户的信用卡信息的时候,需要进行加密处理后存储,并且需要之后进行解密。最好的方法是使用mcrypt模块,这个模块包含了超过30中加密方式来保证只有加密者才能解密数据。
<?php$data = "Stuff you want encrypted" ;
$key = "Secret passphrase used to encrypt your data" ;
$cipher = "MCRYPT_SERPENT_256" $mode = "MCRYPT_MODE_CBC" ;function encrypt( $data, $key , cipher , $mode ) {// Encrypt datareturn (string) base64_encode ( mcrypt_encrypt ( $cipher , substr (md5( $key ),0,mcrypt_get_key_size( $cipher , $mode )), $data , $mode , substr (md5( $key ),0,mcrypt_get_block_size( $cipher , $mode )) ) );
}function decrypt( $data , $key ,$cipher , $mode ) {// Decrypt data
return (string) mcrypt_decrypt ( $cipher , substr (md5( $key ),0,mcrypt_get_key_size( $cipher , $mode )), base64_decode ( $data ), $mode , substr (md5( $key ),0,mcrypt_get_block_size( $cipher , $mode )) );
}?>
mcrypt函数需要以下信息:
1、待加密数据
2、用来加密和解密数据的key
3、用户选择的加密数据的特定算法(cipher:
如 MCRYPT_TWOFISH192
,MCRYPT_SERPENT_256, MCRYPT_RC2
, MCRYPT_DES
, and MCRYPT_LOKI97
)
4、用来加密的模式
5、加密的种子,用来起始加密过程的数据,是一个额外的二进制数据用来初始化加密算法
6、加密key和种子的长度,使用mcrypt_get_key_size函数和mcrypt_get_block_size函数可以获取如果数据和key都被盗取,那么攻击者可以遍历ciphers寻找开行的方式即可,因此我们需要将加密的key进行MD5一次后保证安全性。同时由于mcrypt函数返回的加密数据是一个二进制数据,这样保存到数据库字段中会引起其他错误,使用了base64encode将这些数据转换为了十六进制数方便保存。
;❸ php中&&和||的用法 这样用什么意思
a && b === if(a) { b },&&是同时必须满足的意思。a || b === if(!a) { b },||是或者的意思。
$ckfid&&$rs=$db->get_one("SELECT * FROM $table WHERE fid='$ckfid'");
其实这句话相当于只有当$ckfid不为空的时候才执行后面的也就是约等于。
if($ckfid) {
$rs=$db->get_one("SELECT * FROM $table WHERE fid='$ckfid'");}
而底下的||,则相当于$rs[name]为空的时候才执行,因为当$rs[name]不为空的时候,这个条件已经满足了,后边也不用再做任何判断了。只有不满足的时候,才去做后面的操作。
(3)php6新特性扩展阅读:
PHP的特性包括:
1. PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。
2. PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比,
PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;
PHP具有非常强大的功能,所有的CGI的功能PHP都能实现。
3. PHP支持几乎所有流行的数据库以及操作系统。
4. 最重要的是PHP可以用C、C++进行程序的扩展!
PHP版本VC6与VC9、Thread Safe与None-Thread Safe等的区别。PHP的大版本主要分三支:PHP4/PHP5/PHP6,其中,PHP4由于太古老、对QQ支持不力已基本被淘汰,请无视PHP4。
PHP6由于基本没有生产线上的应用,还基本只是一款概念产品,很多功能已在PHP5.3.3上实现,所以也不详述,请无视PHP6。PHP5的版本主要分四支:PHP5.2之前的版本、PHP5.2.X、PHP5.3和日前发布的PHP5.4。
选择版本,PHP5.2之前的版本不值得考虑,因为某些功能缺陷或者BUG。PHP5.4还处于Beta试用的版本号,非稳定版本,请无视PHP5.4。
主流PHP程序对PHP5.2.X的兼容性最好,而每次版本号的升级带来的都是安全性和稳定性的改善,所以宜挑选最新的版本。目前PHP5.2系列最新的是PHP5.2.17。
❹ PHP语言的有哪些优势和特点
优势和特点:
1、执行速度快:PHP是一种强大的CGI脚本语言,语法混合了C、Java、Perl和PHP式的新语法,执行网页比CGI、Perl和ASP更快,这是它的第一个突出的特点。
2、具有很好的开放性和可扩展性:PHP属于自由软件,其源代码完全公开,任何程序员为PHP扩展附加功能非常容易。
3、数据库支持:PHP支持多种主流与非主流的数据库,如:、Adabas D、DBA、dBase、dbm、filePro、Informix、InterBase、mSQL、MySQL、Microsoft SQL Server、Solid、Sybase、ODBC、oracle、oracle 8、PostgreSQL等。其中,PHP与MySQL是现在绝佳的组合,它们的组合可以跨平台运行。
4、面向对象编程:PHP提供了类和对象。为了实现面向对象编程,PHP4及更高版本提供了新的功能和特性,包括对象重载、引用技术等。
5、版本更新速度快:与数年才更新一次的ASP相比,PHP的更新速度就要快得多,因为PHP每几周就更新一次。
6、具有丰富的功能:从对象式的设计、结构化的特性、数据库的处理、网络接口应用、安全编码机制等,PHP几乎涵盖了所有网站的一切功能。
7、可伸缩性:传统上网页的交互作用是通过CGI来实现的。CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程。
8、功能全面:php包括图形处理、编码与解码、压缩文件处理、xml解析、支持http的身份认证、cookie、 pop3 、snmp等。
(4)php6新特性扩展阅读:
PHP的发展现状:
PHP技术核心和相关的人才需求,正符合互联网的发展趋势。网站开发、API接口开发,服务器端开发,移动端后台开发,内部OA系统开发,游世慧戏开发等均用到PHP语言谨绝。
在IT行业和互联网的飞速发展的时代,企业对PHP开发人员的需求也大幅增加,目前在国内专业搜晌答的互联网招聘网站,好多知名公司发布招聘PHP岗位,其中包括网易、京东、联想、阿里巴巴、滴滴打车、美团、大众点评、易到用车、网络、新浪、搜狐、奇虎、腾讯等。
❺ php编程技术的发展历史
PHP原始为 Personal Home Page的缩写,现已经正式更名为 PHP: Hypertext Preprocessor的缩写。注意不是“Hypertext Preprocessor”的缩写,这种将名称放到定义中的写法被称作递归缩写。PHP于19
ISAPI筛选器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,一个存取数据库的延伸函数库)、以及许多效能上的增强。至2013年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)
PHP最新发布版本:5.4.11(2013.1.17)
❻ php语言是什么语言
PHP开发班
课程:MySQL数据库的创建、修改及删除;数据表的创建、修改及删除;无限分类的数据表设计;记录的插入、更新、删除及查找;外键与连接;索引;存储过程,触发器,游标;事务处理;数据库引擎详解;数据库集群,数据库读写分离、类与对象,类的定义;属性与方法;$this关键字、 self关键字;继承,多态;魔术方法;抽象类与接口;设计模式;PDO类;JpGraph图表,FusionCharts图表;PHP高级应用(Smarty模板、PHP框架技术)等。
❼ PHP的其他方面
PHP 在数据库方面的丰富支持,也是它迅速走红的原因之一,它支持下列的数据库或是数据文件:
Adabas 、D、 DBA、dBase 、dbm 、filePro 、Informix 、InterBase、mSQL 、Microsoft SQL Server、·MySQL、Solid、Sybase、 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
为了确保代码的易读性,本手册还介绍了一些伪类型:mixed、number、callback
语法(例子中均忽略了PHP代码边界符 <?php ?>):
注释的语法有三种: //comment这个是单行注释/*comment*/这个是多行注释#comment这个是脚本类型注释,很少用基本的结构控制语句: //分支结构(选择结构)if(condition){//Statement}if(condition){//Statement}else{//Statement}if(condition){//Statement}elseif(condition){//Statement}//多分支结构switch($变量){case'值'://Statementbreak;case'值2'://Statementbreak;default://Statement}//循环结构while(condition){//Statement}do{//Statement}while(condition);for(初始化;判断;变化){//Statement}//数组遍历专用循环语句foreach($Arrayas$value){echo$value;}foreach($Arrayas$key=>$value){echo$key;echo$value;}一个PHP实例: <html><head><title>Firstprogram</title></head><body>//php中string类型的拼接符和其它大多数采用+号运算符不一样,而是采用.号运算//在一般语言中用于对象属性和方法调用的.运算符,则和C语言的结构体一样用=><?phpechohelloworld.!;?></body></html>php对面向对象的支持
面向对象编程的概念:
不同的作者之间说法可能不一样,但是一个OOP语言必须有以下几方面:
1.抽象数据类型和信息封装
2.继承
3.多态
在PHP中是通过类来完成封装的: //在OOP类中,通常采用大双驼峰命名法,每个单词的首字母都大写classSomething{//作用域修饰符:public公共的;private私有的;protected受保护的;//属性的名称一般用全小写private$x=null;//在编程建议中,内部使用的属性应该给私有修饰符,然后通过方法取值赋值//方法的名称一般用小驼峰命名法,第一个单词全小写,剩下的单词首字母大写//因为PHP不会自动为变量使用$this所以必须主动加上$this伪变量来指向操作的对象publicfunctionsetX($v){$this->x=$v;}publicfunctiongetX(){return$this->x;}}当然你可以按自己的喜好进行定义,但最好保持一种标准,这样会更有效。数据成员在类中使用var声明来定义,在给数据成员赋值之前,它们是没有类型的。一个数据成员可以是一个整数,一个数组,一个相关数组(associative array)或者是一个对象。方法在类中被定义成函数形式,在方法中访问类成员变量时,你应该使用$this->name,否则对一个方法来说,它只能是局部变量。
使用new操作符来创建一个对象: $obj=newSomething;然后你可以使用成员函数通过: $obj->setX(5);$see=$obj->getX();echo$see;在这个例子中,setX成员函数将5赋值给对象的成员变量x(不是类的),然后getX返回它的值5。可以象:$obj->x=6那样通过类引用方式来存取数据成员,这不是一个很好的OOP习惯。我强烈建议通过方法来存取成员变量。如果你把成员变量看成是不可处理的,并且只通过对象句柄来使用方法,你将是一个好的OOP程序员。不幸的是,PHP不支持声明私有成员变量,所以不良代码在PHP中也是允许的。继承在PHP中很容易实现,只要使用extends关键字。 classAnotherextendsSomething{private$y;publicfunctionsetY($v){$this->y=$v;}functiongetY(){return$this->y;}}Another类的对象拥有了父类(Something)的全部的数据成员及方法,而且还加上了自己的数据成员和方法。
你可以使用 $obj2=newAnother;$obj2->setY(5);echo$obj2->getY();PHP只支持单继承,所以你不能从两个或两个以上类派生出新的类来。你可以在派生类中重定义一个方法,如果我们在Another类中重定义了getX方法(方法重写),我们就不能使 用Something中的getX方法了。如果你在派生类中声明了一个与基派同名的数据成员,那么当你处理它时, 它将“隐藏”基类的数据成员。
你可以在你的类中定义构造函数。构造函数是一个与类名同名的方法,当你创建一个类的对象时会被调用,例如: classSomething{private$x=null;//新版本的构造函数放弃使用类名,而统一使用__construct()publicfunction__construct($x){$this->x=$x;}publicfunctionsetX($v){$this->x=$v;}publicfunctiongetX(){return$this->x;}//析构函数publicfunction__destruct(){}}所以你可以创建一个对象,通过: $obj=newSomething(6);构造函数会自动地把6赋值给数据变量x。构造函数和方法都是普通的PHP函数(”__“两个下划线,魔术方法),所以你可以使用缺省参数。 publicfunction__construct($x=3,$y=5){}接着: $obj=newSomething();//x=3andy=5$obj=newSomething(8);//x=8andy=5$obj=newSomething(8,9);//x=8andy=9缺省参数使用C++的方式,所以你不能忽略Y的值,而给X一个缺省参数,参数是从左到右赋值的,如果传入的参数少于要求的参数时,其作的将使用缺省参数。
当一个派生类的对象被创建时,只有它的构造函数被调用,父类的构造函数没被调用,如果你想调用基类的构造函数,你必须要在派生类的构造函数中用parent::__construct()调用。可以这样做是在派生类中所有父类的方法都是可用的。 classAnotherextendsSomething{publicfunction__construct(){parent::__construct(5,6);//显示调用基类构造函数}}OOP的一个很好的机制是使用抽象类。抽象类是不能实例化,只能提供给派生类一个接口。设计者通常使用抽象类来强迫程序员从基类派生,这样可以确保新的类包含一些期待的功能。在PHP中没有标准的方法,但是:如果你需要这个特性,可以通过定义基类,并在它的构造函数后加上die 的调用,这样就可以保证基类是不可实例化的,在每一个方法(接口)后面加上die 语句,所以,如果一个程序员在派生类中没有覆盖方法,将引发一个错误。而且因为PHP 是无类型的,你可能需要确认一个对象是来自于你的基类的派生类,那么在基类中增加一个方法来实义类的身份(返回某种标识id),并且在你接收到一个对象参数时校验这个值。当然,如果一个不好的邪恶程序员在派生类中覆盖了这个方法,这种方法就不起作用了,不过一般问题多在懒惰的程序员身上,而不是邪恶的程序员。
当然,能够让基类对程序员无法看到是很好的,只要将接口打印出来做他们的工作就可以了。PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,如 C++。析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。
重载(与覆盖不同)在PHP中不支持,因为PHP是弱类型语言。在OOP中,你可以重载一个方法来实现两个或重多的方法具有相同的名字,但是有不同数量或类型的参数(这要看语言)。PHP 是一种松散类型的语言,所以通过类型重载不起作用,然而通过参数的个数不同来重载也不起作用。
有时在OOP中重载构造函数非常好,这样你可以通过不同的方法创建对象(变量函数)。在PHP中实现它的技巧是: classMyclass{publicfunctionMyclass(){$name=Myclass.func_num_args();//这个函数返回的是传过来参数的个数$this->$name();//这里使用的是一个变量函数,以这个变量的值作为函数的名称调用}publicfunctionMyclass1($x){//code}publicfunctionMyclass2($x,$y){//code}}通过在类中的额外的处理,使用这个类对用户是透明的: $obj1=newMyclass('1');//将调用Myclass1$obj2=newMyclass('1','2');//将调用Myclass2有时这个非常好用。
多态
多态是对象的一种能力,它可以在运行时刻根据传递的对象参数,决定调用哪一个对象的方法。例如,如果你有一个figure的类,它定义了一个draw的方法。并且派生了circle和rectangle 类,在派生类中你覆盖了draw方法,你可能还有一个函数,它希望使用一个参数x,并且可以调用$x->draw()。如果你有多态性,调用哪个draw方法就依赖于你传递给这个函数的对象类型。
多态性在象PHP这样的解释语言(想象一下一个C++编译器生成这样的代码,你应该调用哪一个方法?你也不知道你拥有的对象是什么类型的,好,这不是重点)是非常容易和自然的。所以PHP当然支持多态性。 classCalc{functionniceDrawing($x){//假设这是Board类的一个方法$x->draw();}}classCircle{publicfunctiondraw(){echo画了一个圆;}}classRectangle{publicfunctiondraw(){echo画了一个矩形;}}$board=newCalc;$obj=newCircle(3,187);$obj2=newRectangle(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 进行序列化对于保存对象的成员变量非常有用。(你也可以将相关数组和数组序列化到一个文件中)。
例子 : $obj=newClassfoo();$str=serialize($obj);//保存$str到磁盘上$obj2=unserialize($str);//几个月以后//从磁盘中装入str你恢复了成员数据,但是不包括方法(根据文档所说)。这导致了只能通过类似于使用$obj2->x来存取成员变量(你没有别的方法!)的唯一办法,所以不要在家里试它。
有一些办法可以解决这个问题,我把它留着,因为对这篇简洁的文章来说,他们太不好。我会很高兴地欢迎在PHP的后续版本中有全序列化的特性。
使用类进行数据存储PHP和OOP一件非常好的事情就是,你可以很容易地定义一个类来操作某件事情,并且无论何时你想用的时候都可以调用相应的类。假设你有一个HTML表单,用户可以通过选择产品ID号来选择一个产品。在数据库中有产品的信息,你想把产品显示出来,显示它的价格等等。你拥有不同类型的产品,并且同一个动作可能对不同的产品具有不同的意思。例如,显示一个声音可能意味着播放它,但是对于其它种类的产品可能意味着显示一个存在数据库中的图片。你可以使用OOP或PHP来减少编码并提高质量:
定义一个产品的类,定义它应该有的方法(例如:显示),然后定义对每一种类型的产品的类,从产品类派后出来(SoundItem类,ViewableItem类,等等),覆盖在产品类中的方法,使它们按你的想法动作。
根据数据库中每一种产品的类型(type)字段给类命名,一个典型的产品表可能有(id,type,price,description,等等字段)...然后在处理脚本中,你可以从数据库中取出type值,然后实例化一个名为type的对象: $obj=new$type();$obj->action();这是PHP的一个非常好的特性,你可以不用考虑对象的类型,调用$obj的显示方法或其它的方法。使用这个技术,你不需要修改脚本去增加一个新类型的对象,只是增加一个处理它的类。
这个功能很强大,只要定义方法,而不去考虑所有对象的类型,在不同的类中按不同的方法实现它们,然后在主脚本中对任意对象使用它们,没有if...else,也不需要两个程序员,只有高兴。
你同意编程是容易的,维护是便宜的,可重用是真的吗?
如果你管理一组程序员,分配工作就是很简单的了,每个人可能负责一个类型的对象和处理它的类。
可以通过这个技术实现国际化,根据用户所选的语言字段应用相应的类就可以了,等等。
拷贝和克隆
当你创建一个$obj的对象时,你可以通过$obj2=$obj来拷贝对象,新的对象是$obj的一个拷贝(不是一个引用),所以它具有$obj在当时的状态。有时候,你不想这样,你只是想生成一个象obj类一样的一个新的对象,可以通过使用new语句来调用类的构造函数。在PHP中也可以通过序列化,和一个基类来实现,但所有的其它类都要从基类派生出来。
进入危险区域
当你序列化一个对象,你会得到某种格式的字符串,如果你感兴趣,你可以调究它,其中,字符串中有类的名字(太好了!),你可以把它取出来,象: $herring=serialize($obj);$vec=explode(':',$herring);//以:为标识符把字符串拆分成一个数组$nam=str_replace(,'',$vec[2]);所以假设你创建了一个Universe的类,并且强制所有的类都必须从universe扩展,你可以在universe 中定义一个clone的方法,如下: classUniverse{//在新的PHP版本中克隆(__clone())是一个魔术方法,不要和这个方法搞混了functionclone(){$herring=serialize($this);$vec=explode(':',$herring);$nam=str_replace(,'',$vec[2]);$ret=new$nam;return$ret;}}//然后$obj=newSomething();//从Universe扩展$other=$obj->clone();你所得到的是一个新的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:Wudimei开发的国产框架Rong Framework的模板引擎,它类似于smarty,优点是速度快,缺点是模板标签较少,不过够用了。 框架介绍thinkphp
ThinkPHP是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。
PHP认证级别
PHP课程由初级(IFE)、中级(IPE)和高级(IAE)三个部分。 IFE即Index Front-end Engineer的缩写,指数前端工程师的意思。 IPE即 Index PHP Engineer 的缩写,意思是指数PHP工程师。 IAE即 Index architecture/advanced engineer 的缩写,意思是:指数高级/架构工程师。 PHP安全
PHP其实不过是Web服务器的一个模块功能,所以首先要保证Web服务器的安全。当然Web服务器要安全又必须是先保证系统安全,这样就扯远了,无穷无尽。常见的web安全漏洞有:注入攻击,跨站攻击,服务器自身漏洞等,对应的详细解释,详见:扩展阅读中的《WEB安全性-2010_OWASP_TOP10》,这里有很详尽的解释。
PHP的优点学习过程和方法
PHP的语法类似于C,Perl,ASP或者JSP。对于那些对上述之一的语言较熟悉的人来说,PHP太简单了。相反的,如果你对PHP了解较多,那么你对于其他几种语言的学习都很简单了。你只需要很短的时间内将PHP的核心语言特点全部掌握,你可能已经非常了解HTML,甚至你已经知道怎样用编辑设计软件或者手工来制作好看的WEB站点。由于PHP代码能够无障碍的添加进你的站点,在你设计和维护站点的同时,你可以很轻松的加入PHP使得你的站点更加具有动态特性。
数据库连接
PHP可以编译成具有与许多数据库相连接的函数。PHP与MySQL是绝佳的组合,如果再加上Apache服务器,就是相当完美的了。你还可以自己编写外围的函数取间接存取数据库。通过这样的途径当你更换使用的数据库时,可以轻松的更改编码以适应这样的变化。PHPLIB就是最常用的可以提供一般事务需要的一系列基库。
可扩展性
就像前面说的那样,PHP已经进入了一个高速发展的时期。对于一个非程序员来说为PHP扩展附加功能可能会比较难,但是对于一个PHP程序员来说并不困难。
PHP可伸缩性
传统上网页的交互作用是通过CGI来实现的。CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程。解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP就可以以这种方式安装,虽然很少有人愿意这样以CGI方式安装它。内嵌的PHP可以具有更高的可伸缩性。
PHP免费安装
PHP源代码包安装版:这个版本适合已经有自己独立的网站域名、网站空间的专业网站建设用户。使用方法依然其为简单,只需三步:
第一、到官方网站:下载 PHP源代码包安装版最新版本,解压下载文件,将其中的全部内容上传到你的支持PHP的网站空间
第二、改更文件属性,请将根目录下以PHP为后缀名的文件和”/include/domain.php”和 “/attachments” 和 “/data”文件夹以及文件夹下所有的文件属性改成“可读”、“可写”、“可执行”,通常是“755”。
第三、打开你的网站根目录,系统会自动运行setup安装程序,按提示点下一步操作即可。
友情提示:当你下载我们的软件并看到这份说明时,则说明你一定是对企业网站建设有一定的需求或者你是一个网站建设技术学习者。
文件格式 对于只含有 php 代码的文件,我们将在文件结尾处忽略掉 ?>。这是为了防止多余的空格或者其它字符影响到代码。 例如:
$foo = 'foo'; 缩进应该能够反映出代码的逻辑结果,尽量使用四个空格,禁止使用制表符TAB,因为这样能够保证有跨客户端编程器软件的灵活性。 例如: if(1==$x){$indented_code=1;if(1==$new_line){$more_indented_code=1;}}变量赋值建议保持相等间距和排列。 例如: $variable='demo';$var='demo2';每行代码长度应控制在80个字符以内,最长不超过120个字符。因为 linux 读入文件一般以80列为单位,就是说如果一行代码超过80个字符,那么系统将为此付出额外操作指令。这个虽然看起来是小问题,但是对于追求完美的程序员来说也是值得注意并遵守的规范。 每行结尾不允许有多余的空格。 Php文件记事本编辑乱码问题
一般情况下,记事本编辑器在对文件进行完编辑并保存之时,其默认编码为ANSI,中文。然则更多的时候,php在语言环境设置时语言多数为utf-8,直接保存并用于apache等http-server解析后就会出现乱码。
为此,应该注意在用记事本编辑完后可将文件用“另存为”的方式对文件进行保存,并将“文件类型”选择“所有文件”,编码与文件指定语言编码一致即可。
算数运算符
PHP 的运算符包括算术运算符、赋值运算符、比较运算符和逻辑运算符。
算数运算符:
加,减,乘,除,取模(取余)+、-、*、/、%
赋值运算符:(以下解释在许多书中有所不同)
赋值,加赋值,减赋值、乘赋值、除赋值,连字赋值
=、+=、-=、*=、/=、.=
位运算符:
位与、位或、位亦或、位非、左移、右移
&、|、^、~、<<、>>
比较运算符:
等于、全等于、不等于、不全等于、大于、小于、大于等于、小于等于
==、===、!=(<>)、!==、>、<、>=、<=
逻辑运算符:
逻辑与、逻辑或、逻辑非、逻辑亦或
&&、||、!、xor
字符串运算符:
. 连接两个字符串
❽ php后台管理系统有哪些
国内的php后台管理系统应该主要就是基于thinkphp开发的,其中有thinkcms,FastAdmin,TP6-Admin基于微信管理后台的MoChat。
这些都是比较新的php管理系统,还有基于laravel的管理系统laravel-admin。
❾ PHP是什么
PHP是PHP的递归首字母缩写:Hypertext Preprocessor,一种用于创建动态和交互式HTML网页的脚本语言。当网站访问者打开页面时,服务器处理PHP命令,然后将结果发送到访问者的浏览器。
主要特点
①开源性和免费性
由于PHP的解释器的源代码是公开的,所以安全系数较高的网站可以自己更改PHP的解释程序。另外,PHP运行环境的使用也是免费的。
②快捷性
PHP是一种非常容易学习和使用的一门语言,它的语法特点类似于C语言,但又没有C语言复杂的地址操作,而且又加入了面向对象的概念,再加上它具有简洁的语法规则,使得它操作编辑非常简单,实用性很强。
③数据库连接的广泛性
PHP可以与很多主流的数据库建立起连接,如MySQL、ODBC、Oracle等,PHP是利用编译的不同函数与这些数据库建立起连接的,PHPLIB就是常用的为一般事务提供的基库。
④面向过程和面向对象并用
在PHP语言的使用中,可以分别使用面向过程和面向对象,而且可以将PHP面向过程和面向对象两者一起混用,这是其它很多编程语言是做不到的。
(9)php6新特性扩展阅读
PHP优点
①流行,容易上手
PHP是目前最流行的编程语言,这毋庸置疑。它驱动全球超过2亿多个网站,有全球超过81.7%的公共网站在服务器端采用PHP。PHP常用的数据结构都内置了,使用起来方便简单,也一点都不复杂,表达能力相当灵活。
②开发职位很多
在服务器端的网站编程中PHP会更容易帮助你找到工作。很多互联网相关企业都在使用PHP开发框架,所以可以说市场对PHP的开发程序员的需求还是比较大的。
③仍然在不断发展
PHP在不断兼容着类似closures和命名空间等技术,同时兼顾性能和当下流行的框架。版本是7之后,一直在提供更高性能的应用。
④可植入性强
PHP语言在补丁漏洞升级过程中,核心部分植入简单易行,且速度快。
⑤拓展性强
PHP语言在数据库应用过程中,可以从数据库调取各类数据,执行效率高
❿ php是什么
超文本预处理器
PHP(外文名:Hypertext Preprocessor,中文名:超文本预处理器)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。
PHP原始为Personal Home Page的缩写,已经正式更名为 "PHP: Hypertext Preprocessor"。注意不是“Hypertext Preprocessor”的缩写,这种将名称放到定义中的写法被称作递归缩写。PHP于1994年由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。经过几个月测试,开发团队在1997年11月发布了 PHP/FI 2。随后就开始 PHP 3 的开放测试,最后在1998年6月正式发布 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 发布后开始改写PHP 的核心,这个在1999年发布的剖析器称为 Zend Engine,他们也在以色列的 Ramat Gan 成立了 Zend Technologies 来管理 PHP 的开发。在2000年5月22日,以Zend Engine 1.0为基础的PHP 4正式发布,2004年7月13日则发布了PHP 5,PHP 5则使用了第二代的Zend Engine。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.4.30(2013.6.26)PHP最新发布的正式版本:5.5.14(2014.6.24)PHP最新测试版侍弯哗本:5.6.0 RC2(2014.6.03)2013年6月20日,PHP开发团队自豪地宣布推出PHP 5.5.0。此版本包含了大量的新功能和bug修复。需要开发者特别注意的一点是不再支持 Windows XP 和 2003 系统。2014年10月16日,PHP开发团队宣布PHP 5.6.2可用。四安全相关的错误是固定在这个版本,包括修复cve-2014-3668,cve-2014-3669和cve-2014-3670。所有的PHP 5.6鼓励用户升级到这个版本。
PHP的特性包括:1. PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。2. PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;PHP具有非常强大的功能,所有的CGI的功能PHP都能实现。3. PHP支持几乎所有流行的数据库以及操作系统。4. 最重要的是PHP可以用C、C++进行程序的扩展!