PHP 5.4 –核心更改

除上述补充外,还为现有类添加了各种新功能和其他方法。
现在,类支持Class :: {expr}()语法。现在,您可以为静态调用完成类似以下的操作:

class Test
{
 public static function parseH4()
 {
 echo "H4 Parsed";
 }

 public static function parseH2()
 {
 echo "H2 Parsed";
 }

}

$t = new Test;
$method_prefix = "parse";

$t::{$method_prefix . "h4"}();
$t::{$method_prefix . "h2"}();

尽管不是非常创意地使用该思想,但是当使用动态方法调用时,上述内容的真正力量将体现出来。除了在调用静态类方法时对表达式的支持之外,还添加了对实例化的类成员访问,如下所示。

class Test
{
 public function SayHello()
 {
 echo "你好,世界!";
 }
}

(new Test)->SayHello();

魔术引号已被完全删除。依赖于此功能的应用程序可能需要更新,以避免安全问题。get_magic_quotes_gpc()get_magic_quotes_runtime()现在总是返回FALSE。set_magic_quotes_runtime()引发E_CORE_ERROR级错误。

以下功能已从PHP 5.4中删除,因此,如果您正在开发任何可能会迁移到PHP 5.4的新应用程序,请避免使用以下功能。

define_syslog_variables()
import_request_variables()
session_is_registered()
session_register()
session_unregister()
mysqli_bind_param()
mysqli_bind_result()
mysqli_client_encoding()
mysqli_fetch()
mysqli_param_count()
mysqli_get_metadata()
mysqli_send_long_data()
mysqli::client_encoding()
mysqli_stmt::stmt()

register_globals和register_long_arraysphp.ini指令已删除。也不再支持安全模式。出于安全原因而依赖于安全模式的任何应用程序都可能需要进行调整。自PHP 5.3.0起,此功能已被弃用,现已完全删除。现在,启用后,这将生成致命的E_CORE_ERROR级别错误。