在編寫PHP應(yīng)用程序時(shí),一個(gè)常見的問題是什么時(shí)候應(yīng)該停止支持使用某個(gè)函數(shù)或特定功能。當(dāng)PHP核心開發(fā)者決定將某個(gè)API標(biāo)記為"deprecated"時(shí),這表示該API將在不遠(yuǎn)的將來被刪除。因此,當(dāng)編寫或更新應(yīng)用程序時(shí),開發(fā)者需要知道哪些PHP功能已經(jīng)被廢棄,以便及時(shí)修改他們的代碼并避免在PHP更新后出現(xiàn)錯(cuò)誤。
下面我們來看一個(gè)例子。在早期版本的PHP中,我們可以使用mysql_connect()函數(shù)來連接到MySQL數(shù)據(jù)庫。然而,自PHP 5.5后,這個(gè)函數(shù)被標(biāo)記為廢棄,意味著在未來的版本中將被刪除。現(xiàn)在,我們應(yīng)該使用mysqli_connect()或PDO連接到MySQL數(shù)據(jù)庫。
//原始代碼 $link = mysql_connect('localhost', 'user', 'password'); //更新后代碼 $link = mysqli_connect('localhost', 'user', 'password'); //或者 $link = new PDO("mysql:host=localhost;dbname=database", 'username', 'password');
除了函數(shù)之外,PHP的廢棄指南還包括其他功能,如警告和提示。例如,從PHP 7.2開始,當(dāng)使用var未定義變量時(shí),會發(fā)出E_NOTICE錯(cuò)誤。在之前的版本中,這將拋出E_WARNING錯(cuò)誤,但在PHP 8中,該警告將被刪除。
此外,開發(fā)人員也應(yīng)該避免使用已經(jīng)不再支持的語言特性,如為數(shù)組賦值空字符串、使用傳統(tǒng)的ereg函數(shù)等。下面的代碼段可以展示這方面的問題:
//初始代碼 $myArray = array(); $myArray[0] = ""; //更新后代碼 $myArray = []; //舊的ereg函數(shù),現(xiàn)在應(yīng)該使用preg_match if (ereg("^[A-Za-z0-9_-]$", $username)) { echo "The username is valid."; }
最后,要特別強(qiáng)調(diào)的是,當(dāng)PHP核心開發(fā)者標(biāo)記函數(shù)或特定功能已過期時(shí),這通常意味著它將被刪除。因此,開發(fā)人員需要及時(shí)更新他們的代碼,以避免不必要的錯(cuò)誤。雖然這可能需要一些工作,但它可以確保PHP應(yīng)用程序保持最新,運(yùn)行良好,并能夠利用旁邊的新功能和API。