从PHP5到PHP7的注意事项
原文地址:https://www.phpxy.com/article/25.html
PHP7是大勢所趨了。PHP7有更多的新特性,更好的性能,更高的速度。并且,從今年8月7日開始發(fā)行PHP7.0的beta3 即將發(fā)布的PHP7 的RC1版本。腳步越來越近,有更多的人來學(xué)習(xí)PHP7的新特性。PHP學(xué)院將對PHP7的新特性進(jìn)行連載。
并且,現(xiàn)在國內(nèi)PHPer中喜歡嘗新鮮的人一些人,已經(jīng)安裝好了PHP7。我們來看看PHP7 到底有哪些新特性。
今天我們來講解的是PHP提倡的一些風(fēng)格,并且將原有PHP4當(dāng)中的一些風(fēng)格進(jìn)行了禁用。
1,PHP5發(fā)行的時候?yàn)榱擞懞肁SP程序員,PHP準(zhǔn)備了asp_tags全部被禁止
在未來沒有<% ?%> 這種風(fēng)格,PHP也不再支持這種風(fēng)格的聲明。
<script language="php"></script>
2,PHP4的語法風(fēng)格中的一些東西將被,例如構(gòu)造函數(shù)的用法,會在新的PHP7中完全被拋棄。PHP7將會提示一個:?E_DEPRECATED的錯誤提示。
<?php
class?foo?{
? ? //方法名類名相同的構(gòu)造函數(shù)的用法不再兼容
????function?foo()?{
????????echo?'I?am?the?constructor';
????}
}
?>
1. define定義常量不僅僅只支持標(biāo)量,還支持了數(shù)組
<?php
define('PHPXY',?array(
????'鳳姐',
????'芙蓉姐姐',
????'楊冪是臭腳'
));
echo?PHPXY[1];?//?輸出的結(jié)果是“芙蓉姐姐”
?>
2.比較的時候支持<=> 可以比較字符串,數(shù)組,整型。
<?php
//?Integers
echo?1?<=>?1;?//?0
echo?1?<=>?2;?//?-1
echo?2?<=>?1;?//?1
PHP學(xué)院評:我們認(rèn)為實(shí)際用戶不大,在實(shí)際工作中使用量不會很高
3.在PHP7 中支持了 函數(shù)的強(qiáng)制參數(shù)類型指定
<?php
//?Coercive?mode
function?sumOfInts(int?...$ints)
{
????return?array_sum($ints);
}
var_dump(sumOfInts(2,?'3',?4.1));
//本例中會輸出9,你想想為什么喲?——因?yàn)閺?qiáng)制規(guī)定為了整型
PHP學(xué)院評:function funcName(... 參數(shù)) 是PHP5.6開始支持的。不要認(rèn)為是PHP7里的知識點(diǎn)
4. 返回類型也在強(qiáng)制進(jìn)行規(guī)定
function?arraysSum(array?...$arrays):?array
{
????return?array_map(function(array?$array):?int?{
????????return?array_sum($array);
????},?$arrays);
}
print_r(arraysSum([1,2,3],?[4,5,6],?[7,8,9]));
5. 新建了call方法在外部來調(diào)用,更短的方式將匿名函數(shù),追加進(jìn)對向中且完成調(diào)用
class?A?{private?$x?=?1;}
//?Pre?PHP?7?code
$getXCB?=?function()?{return?$this->x;};
$getX?=?$getXCB->bindTo(new?A,?'A');?//?intermediate?closure
echo?$getX();
//?PHP?7+?code
$getX?=?function()?{return?$this->x;};
echo?$getX->call(new?A);
6. 成員方法中也可以規(guī)定必須要返回某個類類型
class?A?{}
class?B?extends?A?{}
class?C
{
????public?function?test()?:?A
????{
????????return?new?A;
????}
}
世界上最悲慘的事情不是你在我面前你不知道我愛你。而是——你在七夕開房,我卻在學(xué)習(xí)新知識。對于我等程序狗、單身狗來說,唯一努力學(xué)習(xí)新的知識或者才能逆轉(zhuǎn)。變成富帥,早日迎取白富美吧。而PHP7的刪除的一些函數(shù)是我們必須的.
PHP手冊中,為了專門應(yīng)對大家的升級,為大家將PHP7中刪除的一些函數(shù)進(jìn)行了說明和整理。如果你在項(xiàng)目中使用到了這些函數(shù),請整個項(xiàng)目進(jìn)行查找,修改。
1. call_user_method() 和 call_user_method_array()
2. mcrypt_generic_end() alias in favor of mcrypt_generic_deinit()
3.棄用 ?mcrypt_ecb(), mcrypt_cbc(), mcrypt_cfb() and mcrypt_ofb() 有利于mcrypt_decrypt() 的參數(shù) MCRYPT_MODE_*
4.棄用 datefmt_set_timezone_id() 和IntlDateFormatter::setTimeZoneID() 有利于 datefmt_set_timezone() 或者IntlDateFormatter::setTimeZone()
5. set_magic_quotes_runtime() 和它的別名函數(shù) magic_quotes_runtime()
6. set_socket_blocking() 有利于它的別名函數(shù) ?stream_set_blocking()
7. 來自于fast-cgi的dl()
8.???T1Lib 支持刪除,所以刪除:imagepsbbox(), imagepsencodefont(), imagepsextendedfont(), imagepsfreefont(), imagepsloadfont(), imagepsslantfont(), imagepstext()
原本的PHP7 新特性的連載計劃出現(xiàn)了一點(diǎn)點(diǎn)小的耽擱,我們將PHP7 RC1版本的官方新聞通稿進(jìn)行了翻譯。這就是大家等了很久的PHP7.0 RC1版本。
所謂RC版本,就是即將正式推行的版本。(Release Candidate) 用在軟件上就是候選版本。系統(tǒng)平臺上就是發(fā)行候選版本。RC版不會再加入新的功能了,主要著重于除錯。
PHP開發(fā)團(tuán)隊宣布PHP 7.0.0 RC 1的版本是一個即將可用的版本。你可以詳細(xì)的測試,并將將遇到的問題,報告給PHP的BUG 跟蹤系統(tǒng)。
BUG測試提交的地址為:https://bugs.php.net/
1. PHP7 的速度高達(dá)php 5.6 兩倍之巨
2. 更好的支持64位操作系統(tǒng)
3. 更多的錯誤支持和新的錯誤捕獲
- 4. 刪除一些不支持的函數(shù)和不支持的SAPIs和擴(kuò)展
-
- 5. 空合并運(yùn)算符( ??)
-
- 6. 綜合比較運(yùn)算符(<=>)
-
- 7. 返回類型聲明
-
- 8 .標(biāo)量類型聲明
-
- 9 .匿名類
PHP刪除了一些函數(shù),其中是嚇人的是兩個:
1. ereg_* 系列的正則函數(shù)
2. mysql_* 系列的數(shù)據(jù)庫連接函數(shù)
PHP7全面刪除Mysql擴(kuò)展支持,原本的mysql_*系列函數(shù)將在mysql中不再得到支持。所以說,如果你的應(yīng)用系統(tǒng)還是使用的是mysql_*系列的函數(shù)來連接數(shù)據(jù)庫,請盡快升級你的mysql系列的函數(shù)。
我們來看看,PHP7 刪除的擴(kuò)展到底有哪些:
- 1. ereg
- 2. mssql
- 3. mysql
- 4. sybase_ct
替代處理和解決方案:
一、 如果你要連接微軟的sql server數(shù)據(jù)庫請使用PDO方案來代規(guī)
二、 如果你使用的mysql系列函數(shù)擴(kuò)展來連接數(shù)據(jù)庫,請采用效率更高的mysql_nd系列函數(shù)。他具有更高的效率
三、 如果你采用的是ereg 系列,盡快改吧。
四、sybase_ct 全面改為sybase*系列吧
很多朋友都不知道什么是SAPI,并且不知道SAPI與PHP的關(guān)系,本章在了解PHP7 刪除了哪些SAPI的同時,你可以了解到更深入的PHP的內(nèi)部處理機(jī)制,并且了解到有哪些SAPI是被刪除?
SAPI指的是PHP具體應(yīng)用的編程接口, 就像PC一樣,無論安裝哪些操作系統(tǒng),只要滿足了PC的接口規(guī)范都可以在PC上正常運(yùn)行, PHP腳本要執(zhí)行有很多種方式,通過Web服務(wù)器,或者直接在命令行下,也可以嵌入在其他程序中。
- aolserver
- apache
- apache_hooks
- apache2filter
- caudium
- continuity
- isapi
- milter
- nsapi
- phttpd
- pi3web
- roxen
- thttpd
- tux
- webjames
上面的這些SAPI們將不會支持了。
總結(jié)
以上是生活随笔為你收集整理的从PHP5到PHP7的注意事项的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: multisim C语言编程,基于Mul
- 下一篇: skyline 环境配置