PHP 7.2.x 中廢棄的功能

不帶引號的字符串

不帶引號的字符串是不存在的全局常量,轉化成他們自身的字符串。 在以前,該行為會產生 E_NOTICE,但現在會產生 E_WARNING。在下一個 PHP 主版本中,將拋出 Error 異常。

<?php

var_dump
(NONEXISTENT);

/* Output:
Warning: Use of undefined constant NONEXISTENT - assumed 'NONEXISTENT' (this will throw an Error in a future version of PHP) in %s on line %d
string(11) "NONEXISTENT"
*/

png2wbmp()jpeg2wbmp()

GD 擴展內的 png2wbmp()jpeg2wbmp() 現已被廢棄,將在下一個 PHP 主版本中移除。

INTL_IDNA_VARIANT_2003 轉化

Intl 擴展廢棄了 INTL_IDNA_VARIANT_2003 轉化,為idn_to_ascii()idn_to_utf8() 的默認選項。 PHP 7.4 會把默認值設置為 INTL_IDNA_VARIANT_UTS46, 并在下一個 PHP 主版本中完全移除 INTL_IDNA_VARIANT_2003。

__autoload() 方法

__autoload() 方法已被廢棄, 因為和 spl_autoload_register() 相比功能較差 (因為無法鏈式處理多個 autoloader), 而且也無法在兩種 autoloading 樣式中配合使用。

track_errors ini 設置和 $php_errormsg 變量

當開啟了 track_errors ini 設置,出現非致命錯誤時, 會在本地作用域創(chuàng)建 $php_errormsg 變量。 由于提供了更好的方式: error_get_last() 來獲取此類錯誤信息,該功能被廢棄。

create_function() 函數

考慮到此函數的安全隱患問題(它是 eval() 的瘦包裝器),該過時的函數現在已被廢棄。 更好的選擇是匿名函數

mbstring.func_overload ini 設置

由于此設置會影響環(huán)境中的字符串系列函數,帶來相互操作中的問題,它現在已被廢棄。

(unset) 類型強制轉化

轉化任意表達式為此類型,結果總是 null,所以這個多余的類型轉化現在也就被廢棄了。

parse_str() 不加第二個參數

使用 parse_str() 時,不加第二個參數會導致查詢字符串參數導入當前符號表。 考慮到安全隱患問題,不加第二個參數使用 parse_str() 的行為已被廢棄。 此函數的第二個選項為必填項,它使查詢字符串轉為 Array。

gmp_random() 函數

此函數基于未知的、取決于平臺的 limb 尺寸產生隨機數。因此,該函數已被廢棄。 使用更好的方式產生隨機數: GMP 擴展中的 gmp_random_bits()gmp_random_range()。

each() 函數

使用此函數遍歷時,比普通的 foreach 更慢, 并且給新語法的變化帶來實現問題。因此它被廢棄了。

assert() 一個字符串參數

assert() 字符串參數將要求它能被 eval() 執(zhí)行。 考慮到可能被執(zhí)行遠程代碼,廢棄了字符串的 assert(),最好提供 bool 的表達式。

錯誤處理器內的 $errcontext 參數

$errcontext 參數包含了錯誤網站的所有本地變量。 考慮到它很少被用到,而且還會導致內部優(yōu)化問題,它現在被廢棄了。 代替用法:調試器應該自己取回錯誤站點的本地變量。

read_exif_data() 函數

read_exif_data() 別名已被廢棄 使用 exif_read_data() 函數代替。