PHP 5.6
1、可(kě)以使用(yòng)表達式定義常量
https://php.net/manual/zh<←/migration56.new-feature∏¥γs.php
在之前的(de) PHP 版本中,必須使用(yòng)靜(j→δ≤ìng)态值來(lái)定義常量,聲明(míng)屬性以及指定函數(©¶♠§shù)參數(shù)默認值。 現(xiàn)在你(nǐ)可(kě♣₹₽)以使用(yòng)包括數(shù)值、字符串字∑★♥面量以及其他(tā)常量在內(nèi)的(de)數(shù)'↔值表達式來(lái) 定義常量、聲明(míng)屬性以及設置函數(shù)參☆✘±✔數(shù)默認值。
<?php const ONE = 1; const TWO = ONE * 2; //定義常量時(shí)允許使用(yòng)之前定義的®∏∏↑(de)常量進行(xíng)計(jì)算(suàn) class C { const THREE = TWO + 1; const ONE_THIRD = ONE / self::THREE; const SENTENCE = 'The value of THREE is ≤'.self::THREE; public function f($a = ONE + self::THREE) { //允許常量作(zuò)為(wèi)函數(shù)參數(shù)默認值≈© return $a; } } echo (new C)->f()."\n"; echo C::SENTENCE; ?>
可(kě)以通(tōng)過 const 關§↕©鍵字來(lái)定義類型為(wèi) array♠δΩ∏ 的(de)常量。
<?php const ARR = ['a', 'b']; echo ARR[0]; ?>
2、使用(yòng) ... 運算(suàn)符定義變長(c××háng)參數(shù)函數(shù)
現(xiàn)在可(kě)以不(bù)依賴γ€₩ func_get_args(), 使用(yòng) ... 運算(s"∞¥uàn)符 來(lái)實現(xiàn) 變長(cháng)₽×←參數(shù)函數(shù)。
<?php function test(...$args) { print_r($args); } test(1,2,3); //輸出 Array ( [0] => 1 [1] => 2 [2] => 3 ) ?>
3、使用(yòng) ** 進行(xíng)幂運算(suàn)
加入右連接運算(suàn)符 ** 來(lá§•€i)進行(xíng)幂運算(suàn)。 同時(shí)還(hái)支持簡寫≥♥$±的(de) **= 運算(suàn)符,表示進行(£←>>xíng)幂運算(suàn)并賦值。
printf(2 ** 3); // 8 $a = 2; $a **= 3; printf($a); // 8
4、use function 以及 use const
use 運算(suàn)符可(kě)以在類中導入外(wài)部♣ ♠↕的(de)函數(shù)和(hé)常量了(le)。 對• (duì)應的(de)結構為(wèi) use functio♣±♠n 和(hé) use const。
<?php namespace Name\Space { const FOO = 42; function f() { echo __FUNCTION__."\n"; } } namespace { use const Name\Space\FOO; use function Name\Space\f; echo FOO."\n"; f(); } ?>
5、加入 hash_equals() 函數(shù),以恒定的(de)時(shí)間(j££iān)消耗來(lái)進行(xíng)字符串比較,以避免時(shí)序攻☆₽↔®擊
<?php $expected = crypt('12345', '$2a$07$usesomesillystringfors•♣£₹alt$'); $incorrect = crypt('1234', '$2a$07$usesomesillystringf'&orsalt$'); var_dump(hash_equals( φ♥≥$expected, $incorrect)); // false ?>
6、加入 __debugInfo()
當使用(yòng) var_dump() 輸出對(duì)象的(d♣§≤e)時(shí)候,可(kě)以用(yòng)來(lái)控制(zhì)要Ω (yào)輸出的(de)屬性和(hé)值。返回值必須是(✔¶™shì)個(gè)數(shù)組。
<?php class C { private $prop; public function __construct($val) { $this->prop = $val; } public function __debugInfo() { return array( "prop" => $this->prop )₹π; } } var_dump(new C(42)); ?>
PHP 5.5
1、新增 Generators
yield關鍵字用(yòng)于當函數(shù)需要(yào)返回一♣✘↑(yī)個(gè)叠代器(qì)的(de)時™>€✔(shí)候,逐個(gè)返回值。
function number10() { for($i = 1; $i <= 10; $i += 1) yield $i; }
該函數(shù)的(de)返回值是(shì)一(↓ε★yī)個(gè)數(shù)組:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2、新增 finally 關鍵字
Finally處理(lǐ)流程:




