PHP 5.6已經(jīng)成為歷史,很多開發(fā)者已經(jīng)轉(zhuǎn)向了更高版本的PHP。對于那些仍舊在使用PHP 5.6的開發(fā)者,我們需要了解的是,很多我們使用的函數(shù)和特性已經(jīng)被廢棄或者是被移除了。這意味著我們不能繼續(xù)使用這些函數(shù)和特性,否則會在未來的版本中出現(xiàn)錯誤。
首先,被廢棄的特性之一是MS SQL擴展程序。這是專為與MS SQL Server數(shù)據(jù)庫進行交互而開發(fā)的擴展程序。在PHP 5.3之前,MS SQL擴展程序是PHP默認(rèn)集成的一部分。但自從PHP 5.3開始,MS SQL擴展程序變成了一個可選擴展程序。而PHP 5.6開始,MS SQL擴展程序被徹底廢棄。
<?php
//以前
mssql_connect("localhost", "username", "password");
//現(xiàn)在
$sqlsrv_connect("localhost", "username", "password");
?>
另一個被廢棄的特性是MySQL擴展程序的副本(mysqlnd)的老版本。自PHP 5.4以后,PHP官方建議使用最新的mysqlnd擴展程序。而PHP 5.6廢棄了mysqlnd的舊版本,停止支持mysqlnd 5.0到5.1以及5.3及以下的版本。如果你仍然在使用舊版的mysqlnd,那么在未來的版本中會停止支持。
PHP 5.6同樣廢棄了一些函數(shù),比如mysql_系列的函數(shù),這些函數(shù)已經(jīng)被從PHP 7.0開始移除。如果你仍在使用這些函數(shù),你應(yīng)該知道它們已經(jīng)不再被官方支持,因為它們存在一些安全漏洞。相應(yīng)的,可以使用PDO或mysqli來代替這些廢棄函數(shù)。
<?php
//以前
$link = mysql_connect("localhost", "username", "password");
//現(xiàn)在
$link = new mysqli("localhost", "username", "password");
?>
此外,廢棄的還有動態(tài)函數(shù)的調(diào)用。在PHP 5.6中,一些傳遞字符串參數(shù)的函數(shù),例如call_user_func(),call_user_func_array()和forward_static_call(),已經(jīng)停止支持。相應(yīng)的,使用靜態(tài)函數(shù)調(diào)用來替代它們,可以達到更好的性能。
<?php
//以前
call_user_func("function_name", $arg1, $arg2);
//現(xiàn)在
function_name($arg1, $arg2);
?>
總之,了解PHP 5.6廢棄的特性和函數(shù),將有助于我們更好地升級到PHP 7或更高的版本。因為在未來版本中,它們都將不再支持。有時,我們需要改寫應(yīng)用程序,以確保我們的應(yīng)用程序在最新版本的PHP中也能正常運行。