很多PHP程序員都知道,從PHP5.3開始加入了一個新的報錯級別DEPRECATED,即將廢棄/過期。下面我們來一個個版本梳理一下。
在php5.3被放棄的函數有:
call_user_method() //使用 call_user_func() 替代 call_user_method_array() //使用 call_user_func_array() 替代 define_syslog_variables() dl() ereg() //使用 preg_match() 替代 ereg_replace() //使用 preg_replace() 替代 eregi() //使用 preg_match() 配合 'i' 修正符替代 eregi_replace() //使用 preg_replace() 配合 'i' 修正符替代 set_magic_quotes_runtime() //以及它的別名函數 magic_quotes_runtime() session_register() //使用 $_SESSION 超全部變量替代 session_unregister() //使用 $_SESSION 超全部變量替代 session_is_registered() //使用 $_SESSION 超全部變量替代 set_socket_blocking() //使用 stream_set_blocking() 替代 split() //使用 preg_split() 替代 spliti() //使用 preg_split() 配合 'i' 修正符替代 sql_regcase() mysql_db_query() //使用 mysql_select_db() 和 mysql_query() 替代 mysql_escape_string() //使用 mysql_real_escape_string() 替代 mysql_close(); // 將不支持全部關閉, 需要改為:mysql_close($link);
廢棄以字符串傳遞區域設置名稱. 使用 LC_* 系列常量替代.
mktime() 的 is_dst 參數. 使用新的時區處理函數替代.
PHP 5.4:
mcrypt_generic_end() mysql_list_dbs()
PHP 5.5:
mcrypt_cbc() mcrypt_cfb() mcrypt_ecb() mcrypt_ofb()
其中,PHP 5.3是廢棄函數的開始,很多常用的以前的正則ereg全部替換preg,但是魔術引號。居然也從PHP 5.3開始棄用,PHP 5.4就移除了。這個算是PHP 5.3的一個大變動吧。
PHP 5.4開始新增了很多特性,這個大家可以網上搜索下,新增很多特殊寫法。可能按照新寫法,老程序員就看不太懂啦~~~
至於PHP 5.5,居然把MYSQL這個擴展去掉了,建議使用MYSQLI或者PDO!!用了5.5很多程序都會報錯,提示mysql_connect即將過期!!會看到如下錯誤:
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in E:testnew 6.php on line 6
PHP5相對於4的跨進最大的就是類的部分,而影響更多的就是廢棄這些老習慣的東西吧。雖然版本一直在升級,但是終究市場上還是大量的5.1.6-5.2.17。5.3開始廢棄很多特性,這就導致了很多程序也不敢直接上,5.5.直接秒殺了大量的開源產品!