【小(xiǎo)編推薦】PHP 5.3、5.4、5.5、5.6 中的(de)​∞新特性

2016-03-21   |&nbs™↑≠p;  發布者:梁國(guó)芳 &nbδφsp; |   查看(kànλσ÷):3320次

php
 

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ǐ)流程: