隨著PHP 7.0的發布,我們也看到了不少廢棄特性。這些特性在過去可能很有用,但是由于種種原因,已經不再適合使用。下面我們就來具體看看這些廢棄特性。
1.遠古的構造函數__autoload()
function __autoload($class_name){ require_once($class_name . '.php'); }
這個構造函數是從PHP 5.1.2開始引入的,用于自動載入類文件。在PHP 7中,這個函數已經被廢棄了。為了支持PSR-4,我們應該使用spl_autoload_register()代替它。
spl_autoload_register(function($class_name){ require_once(str_replace('\\', '/', $class_name) . '.php'); });
2.mysql擴展
mysql_connect(); mysql_query(); mysql_fetch_array();
在PHP 7中,這些mysql擴展方法已經全部被廢棄。取而代之的是mysqli和PDO擴展。
mysqli_connect(); mysqli_query(); mysqli_fetch_assoc();
3.eereg函數
eregi(); eregi_replace();
從PHP 7開始,eereg函數已經被廢棄。因為它在高負載下性能很差,且不支持Unicode字符集。推薦使用preg_match()和preg_replace()。
preg_match('/^(foo|bar)/', $string); preg_replace('/^(foo|bar)/', '', $string);
4.過時的mcrypt擴展
mcrypt_decrypt(); mcrypt_encrypt();
在PHP 7中,mcrypt擴展已經被廢棄。這個擴展基本不再維護,而且使用它容易出現安全漏洞。可以考慮使用openssl擴展代替。
openssl_decrypt(); openssl_encrypt();
5.posix_mkfifo()和posix_mkfifo()
posix_mkfifo(); posix_mknod();
從PHP 7開始,這兩個posix擴展的函數已經被廢棄。可以使用mkfifo()和mknod()代替。
mkfifo(); mknod();
總之,在我們的編碼過程中,盡可能避免使用上述廢棄特性。因為它們可能會導致意想不到的錯誤和安全問題。如果你需要使用其中的一些特性,請謹慎考慮。
上一篇button+與div
下一篇php perl