php5.4.x遷移到php5.5.x遷移到php5
我們提供的服務有:成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、閬中ssl等。為千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的閬中網(wǎng)站制作公司
1不想后兼容的變更
(1)不在支持windows xp和2003
(2)pack和unpack()函數(shù)增加“Z”模式
(3)移除PHP log GUIDs
相關函數(shù)
php_log_guid(),php_egg_log_guid(),php_real_logo_guid(),zend_log_guid()
相關簡單案例
echo php_logo_guid();
echo '';
echo '' ;
var_dump(php_egg_logo_guid() );
var_dump(php_real_logo_guid() );
2 新特性
(1)生成器 yield關鍵字
http://php.net/manual/zh/language.generators.overview.php
生成器提供了一種更容易的方法來實現(xiàn)簡單的對象迭代,相比較定義類實現(xiàn) Iterator 接口的方式,性能開銷和復雜性大大降低。生成器允許你在 foreach 代碼塊中寫代碼來迭代一組數(shù)據(jù)而不需要在內存中創(chuàng)建一個數(shù)組,那會使你的內存達到上限,或者會占據(jù)可觀的處理時間。相反,你可以寫一個生成器函數(shù),就像一個普通的自定義函數(shù)一樣, 和普通函數(shù)只返回一次不同的是, 生成器可以根據(jù)需要 yield 多次,以便生成需要迭代的值。一個簡單的例子就是使用生成器來重新實現(xiàn) range() 函數(shù)。 標準的 range() 函數(shù)需要在內存中生成一個數(shù)組包含每一個在它范圍內的值,然后返回該數(shù)組, 結果就是會產(chǎn)生多個很大的數(shù)組。 比如,調用 range(0, 1000000) 將導致內存占用超過 100 MB。做為一種替代方法, 我們可以實現(xiàn)一個 xrange() 生成器, 只需要足夠的內存來創(chuàng)建 Iterator 對象并在內部跟蹤生成器的當前狀態(tài),這樣只需要不到1K字節(jié)的內存。
function xrange($start, $limit, $step = 1) {
if ($start < $limit) {
if ($step <= 0) {
throw new LogicException('Step must be +ve');
}
for ($i = $start; $i <= $limit; $i += $step) {
yield $i;
}
} else {
if ($step >= 0) {
throw new LogicException('Step must be -ve');
}
for ($i = $start; $i >= $limit; $i += $step) {
yield $i;
}
}
}
/*
* 注意下面range()和xrange()輸出的結果是一樣的。
*/
echo 'Single digit odd numbers from range(): ';
foreach (range(1, 9, 2) as $number) {
echo "$number ";
}
echo "\n";
echo 'Single digit odd numbers from xrange(): ';
foreach (xrange(1, 9, 2) as $number) {
echo "$number ";
}
?>
Single digit odd numbers from range(): 1 3 5 7 9
Single digit odd numbers from xrange(): 1 3 5 7 9
(2)finally關鍵字
在錯誤處理語句try...catch添加上finally與C#,java中類似
(3)foreach 現(xiàn)在支持 list()
foreach 控制結構現(xiàn)在支持通過 list() 構造將嵌套數(shù)組分離到單獨的變量。例如:
$array = [
[ 1 , 2 ],
[ 3 , 4 ],
];
foreach ( $array as list( $a , $b )) {
echo "A: $a ; B: $b \n" ;
}
?>
(4)empty() 支持任意表達式
empty() 現(xiàn)在支持傳入一個任意表達式,而不僅是一個變量。例如:
php5.5.x之前版本
>=php5.5.x
(5)非變量array和string也能支持下標獲取了
echo 'Array dereferencing: ' ;
echo [ 1 , 2 , 3 ][ 0 ];
echo "\n" ;
echo 'String dereferencing: ' ;
echo 'PHP' [ 0 ];
echo "\n" ;
?>
Array dereferencing: 1
String dereferencing: P