PHP7新特性

1.標量類型聲明
可以使用字符串(string), 整數 (int), 浮點數 (float), 以及布爾值 (bool),以前只支持類名、接口、數組及Callable.
兩種風格:強制轉換模式(默認)與嚴格模式( declare(strict_types=1) );
function xxx(int $a, string $b) :array
{
return array($a, $b);
}
2.返回值類型聲明
PHP 7 增加了對返回類型聲明的支持。 類似於參數類型聲明,返回類型聲明指明瞭函數返回值的類型。可用的類型與參數聲明中可用的類型相同。
<?php

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]));
以上實例會輸出:

Array
(
[0] => 6
[1] => 15
[2] => 24
)
3.??運算符NULL 合併運算符
//原寫法
$username = isset($_GET['user]) ? $_GET['user] : 'nobody';
//現在
$username = $_GET['user'] ?? 'nobody';
4.<=> 比較運算符也叫太空船操作符(組合比較符)
就是看兩個表達式值的大小,三種關係: = 返回0、< 返回-1、 > 返回 1
語法:$c = $a <=> $b
如果$a > $b, $c 的值爲1
如果$a == $b, $c 的值爲0
如果$a < $b, $c 的值爲-1
5.define支持定義數組類型的值
define('ARR',['a','b']);
echo ARR[1];//

6.匿名類
現在支持通過new class 來實例化一個匿名類,實例如下:

<?php
interface Logger {
public function log(string $msg);
}

class Application {
private $logger;

public function getLogger(): Logger {
     return $this->logger;
}

public function setLogger(Logger $logger) {
     $this->logger = $logger;
}

}

$app = new Application;
$app->setLogger(new class implements Logger {
public function log(string $msg) {
echo $msg;
}
});

var_dump($app->getLogger());
?>
以上實例會輸出:

object(class@anonymous)#2 (0) {
}
7.匿名函數
$anonymous_func = function(){return 'function';};
echo $anonymous_func(); // 輸出function
8.增加了整除函數 intdiv
<?php
var_dump(intdiv(10, 3));
?>
以上實例會輸出:

int(3)
9.PHP Closure::call()
PHP 7 的 Closure::call() 有着更好的性能,將一個閉包函數動態綁定到一個新的對象實例並調用執行該函數。

實例
實例
<?php
class A {
private $x = 1;
}

// PHP 7 之前版本定義閉包函數代碼
$getXCB = function() {
return $this->x;
};

// 閉包函數綁定到類 A 上
$getX = $getXCB->bindTo(new A, 'A');

echo $getX();
print(PHP_EOL);

// PHP 7+ 代碼
$getX = function() {
return $this->x;
};
echo $getX->call(new A);
?>
以上程序執行輸出結果爲:

1
1
更多http://www.runoob.com/php/php7-new-features.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章