马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
刚开始写页面程序,调试完书中的例子。然后就可以尝试编写留言板了, 今朝,大多半PHP装置仍是利用PHP 4.x版本。实践上,PHP 5.0已出台一段工夫了,而现在PHP 5.1.1也方才刊行。假如你还没有晋级到这些新版本,那末让咱们一同看一下在新版的PHP中的变更,并在最初会商关于PHP 6所希冀的特征。
1、PHP 5.0中的变更
作为一个全新的版本号,在PHP 4和PHP 5之间存在很多本色性的区分。大多半的炒作次要环绕被从头改写过的新的对象模子。PHP 5版本更加完全而且运转功能更加优秀。在PHP 4中,对象其实仅是一个粗拙的数据类型,而且是值援用的。在试图坚持尽量多的向后兼容性的同时,在PHP 5中,设置zend.ze1_compatibility_mode可以答应与版本4中办法的兼容。固然,PHP 5也存在一些向后不兼容的改动,详细包含:
・新的保存上去的关头字大多半与对象模子相干(exception,final, php_user_filter,interface,implements,extends,public,private,protected,abstract,clone,try,catch,throw)。在PHP 4中保存的两个单词不再存在(cfunction,old_function)。
・假如一个对象没有任何属性,那末它不再为空(empty)。
・如今array_merge()函数只吸收数组。
・类可以在利用前声明(依附于详细情形)。
・get_class(),get_parent_class()和get_class_methods()如今可以前往一个巨细写敏感的了局,而之前的前往了局都是小写的。
・strrpos()和strripos()如今利用全部字符串。例如,var_dump(strrpos('ABCDEF','DAF'))将在PHP 4中前往int(3),而在PHP 5中前往bool(false)
・假如$_SERVER存在,它将用argc和argv停止填充-这就答应CLI版本老是可以存取这些数据。
・当传递一个有效的IP地址时,ip2long()前往FALSE而不是-1。
・界说在一个包含文件中的函数如今可以在任什么时候刻为主文件所挪用。假如文件两次被包含(这时候函数已被界说了),PHP 5也将收回一个致命的毛病。
・require_once()和include_once函数如今思索到了Windows巨细的不敏理性,而且将每次仅包含一个文件-即便该函数以分歧巨细写的文件名被挪用屡次。
・脱节了本来PHP 4中的正告。新的PHP 5在碰到一个有效的字符串偏移量时将抛出一个毛病。
・Tokenizer扩大不再界说闲置的T_ML_COMMENT常量。
注重,这些看似较多的不兼容的变更其实其实不大,并且假如你想把原有代码移植到PHP 5中的话,有能够只对你的剧本作少少量的修正便可。PHP 5为做很多工作供应了更好的办法,然而假如你的目标仅是为了能使法式运转,那末你不会碰到太多的费事。在PHP 5中的别的一些变更有:
・在号令行CLI和CGI剧本作了少量变更,无效地进步了新的CLI位置的主要性。
・引入大批的新函数,个中很多是用于处置数组、字符转换和流操作的。
・缺省情形下,MySQL客户端库没有与PHP 5绑定到一同。而是,包含了SQLite扩大-它根基上是一微型数据库引擎,其目标是消弭任何设置和办理的需求。
・新加了mysqli(MySQL加强扩大)(缺省地没有包含在内),为的是充实天时用MySQL 4.1及以上版本的优势。
想更周全地懂得从PHP 4到PHP 5的变更,你可以参考PHP网站上的官方档案。
2、PHP 5.1.x中的变更
在本文成文时,方才刊行PHP 5.1.1(在广为争辩的5.1.0出台后不久)。该版本在PHP邮件列表中引发一阵小的动乱。在5.1.0版本中,某些关头的变更被急忙地包含进一个随后刊行的候选版本中。一切仿佛都闹哄哄的,直到最初的刊行版才引发酣然大波。但是,这些变更在5.1.1中被复原以避免呈现pear::date抵触。
・现在,闪电般退场的PDO成为PHP中心的一局部。要更多地懂得与PHP相干的笼统层常识,可以参考《Database Abstraction in PHP》或PHP网站上的官方档案。
・PDO MySQL驱动法式如今成为存取MySQL的保举办法-在缺省情形下,其实不启用老式的mysqli和mysql扩大。
・PHP 5.1比5.0版本在功能上也大大改善。
・如前所说起的,日期/工夫撑持在5.1.0版本中被重写,而在5.1.1版中又被复原。或许今后不久还会有所变更-虽然都是经由细心企图的。
・在PHP 5.0到PHP 5.0.4版本阶段,是撑持笼统的公有办法的。但是,如今它们都被作废了。
・如今,不答应反复声明一个类常量。上面代码在5.1中不会任务并将抛出一个E_ERROR毛病。
<?php
class anything {
const const_name = 'value';
const const_name = 'value2';
}
?>
・14个更旧的扩大被从PHP中心删除。这些包含 ext/cpdf,ext/dbx,ext/dio,ext/fam,ext/ingres_ii,ext/ircg,ext/mcve,ext/mnogosearch,ext/oracle,ext/ovrimos,ext/pfpro,ext/w32api,ext/yp,sapi/activescript。一切这些还可用于PECL中,虽然并非一切这些扩大都能失掉积极保护。
・在参考援用的办理上也有所变更。之前咱们可以以参考援用体例发送、赋值或前往变量-其实它们应当以值的模式前往。这些包含常数、本身以值模式前往的函数或一个表达式的了局。这里有一个例子:
<?php
$var1 = "value";
function return_val() {
global $var_name;
return $var_name;
}
$var2 = &return_val();
?>
这段代码曩昔是可以任务的(直到5.0.4版本),然而如今在5.1版本中会抛出一个E_STRICT异常。
或许5.1.x不久也会登场,然而个中引入了很多有价值的改善-PDO的引入多是最值得称道的。要具体懂得PHP文档中的更改日记,可以看一下这里有关PHP 5.1(和早些版本)变更的详实列表。
3、PHP 6.0中要作的改动
PHP 6.0估量会是一个相当冲动人心的刊行。但是,甚么器材都是一分为二的。不外,看起来最令我气末路的三个家伙(register_globals,magic_quotes_gpc和safe_mode)能够要退位了。第一个存在一个很大的平安破绽;第二个因为操作大批数据所以在改动情况时几乎就是一场梦魇;而第三个是一个无人能了解的毛病的称号而且会给人带来一种平安方面的错觉。在Unicode成绩上,还有大批的任务要做。上面是估计的一些新变更:
・register_globals,safe_mode和各类魔术援用选项将被删除。
・ereg扩大将被删除,而XMLReader,XMLWriter和Fileinfo扩大将被添加到内核上而且在缺省情形下为on形态。
・我发明的别的一处使人冲动的新变更是,APC(Alternative PHP Cache)将被添加到内核上,虽然在缺省情形下为off形态。APC可觉得开辟者供应严谨的功能好处。
・一切的E_STRICT动静将被兼并进E_ALL-这又是针对优秀编程理论所作出的一个积极更改。
・不再撑持ASP作风的标签<%。
・引入了新的64位整型数。以后的整数类型被保存上去-至因而32仍是64位将依附平台而定。
・可以联合多维数组利用foreach,例如foreach($array as $k => list($a, $b))。
・在php.ini新引入的一个开关将答应你制止Unicode语义(缺省地,它们被置为on形态)。
・还有各类针对Unicode的字符串操作上的改善。
・microtime()函数将前往完全的浮点数,而不是象今朝的微秒值unix_timestamp。如许更能够有益于大多半人的利用。
・不再撑持用于字符串索引的{}正文,而[]版本将被添加到substr()和array_slice()功效中。之前的[]为很多人所品评,然而大多半的开辟者,包含我在内,都一向利用[]。
・在针对CGI SAPI情况时,将一向启用FastCGI,而且不会被制止。
・不再撑持陈旧的HTTP_*_VARS全局变量。
・var将有一个新的别号public。在PHP4 类中Var是被答应的,然而在PHP 5中,这将会激发一个正告。在PHP 6中,var将仅是public的一一般名,因而将不会再呈现正告。
・ze1兼容性形式将被删除-这一体例本来试图保存PHP 4的行动然而却存在一些毛病。
・不再答应用静态语法来挪用静态函数。
别的,还存在很多要决意的成绩,例如定名空间能够更加主要,然而今朝根基上还没有失掉赞同。你可以读一下比来的PHP开辟者会议上关于PHP 6的具体会商。虽然PHP 6还没有出台,然而我信任在其终究刊行之前必定存在很多周折。虽然如斯,PHP所做出的奉献已失掉业界的充实承认,其出路是一片光亮的。
exit来实现结束后面的PHP语句的执行,缩小调试范围,特别是数据库交互的程序,先输出个SQL语句看看,对了,再分析怎么会插入/删除不成功呢?这样对查错很有帮助。 |