Heim >Backend-Entwicklung >PHP-Tutorial >回顾与展望PHP 5.0的变化与PHP 6.0展望_PHP教程
目前,大多数php(做为现在的主流开发语言)安装还是使用php(做为现在的主流开发语言) 4.x版本。实际上,php(做为现在的主流开发语言) 5.0已经出台一段时间了,而如今php(做为现在的主流开发语言) 5.1.1也刚刚发行。如果你还没有升级到这些新版本,那么让我们一同看一下在新版的php(做为现在的主流开发语言)中的变化,并在最后讨论对于php(做为现在的主流开发语言) 6所期望的特性。
一、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中的另外一些变化有: