標量類型聲明php
1. 分爲強制模式和嚴格模式數組
2. 這些類型的函數參數能夠執行聲明session
int, float, bool, string, interfaces, array, callablephp7
例如:閉包
function sum(int ...$ints){app
return array_sum($ints);dom
}yii
print(sum(2,'3',4.1)); //9函數
若是在最頭部加上代碼: this
declare(strict_types=1); //設置爲嚴格模式
則會報錯
Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, ...
返回類型聲明
指定函數返回值的類型
declare(strict_types = 1);
function returnIntValue(int $value): int {
return $value; // 改成: return $value+1.0; 則會報錯
}
print(returnIntValue(5)); //5
空合併運算符(??)
$info = isset($_GET['name']) ? $_GET['name'] : 'not name';
上面那種寫法, 如今能夠這麼寫:
$info = $_GET[name'] ?? 'not name';
或
$info = $_GET['name'] ?? $_POST['name'] ?? 'not name';
飛船操做符
用於比較兩個表達式。當第一個表達式比第二個表達式分別小於,等於或大於它返回-1,0或1
例如:
print( 1 <=> 1);print("<br/>");
print( 1 <=> 2);print("<br/>");
print( 2 <=> 1);print("<br/>");
返回:
0
-1
1
define常量數組
在php5.6中只能用const定義, 如今能夠用define:
define('cats',['blue cat','white cat','black cat']);
new class 匿名類
$app->setLogger(new class{
public function log(string $msg){
print($msg);
}
});
Closure::call()
將一個閉包函數動態綁定到一個新的對象實例, 並執行該函數
class A{
private $x = 1;
}
$getX = function(){
return $this->x;
};
echo $getX->call(new A);
爲unserialize()提供過濾
IntlChar類
隨機數
string random_bytes (int $length) 生成僞隨機字節
int random_int (int $min, int $max) 生成僞隨機在整數
use語句
從同一個命名空間導入類, 函數, 常量, 而不須要屢次使用use
use com\yiibai\{ClassA, ClassB, ClassC as C};
use function com\yiibai\{fn_a, fn_b, fn_c};
use const com\yiibai\{ConstA, ConstB, ConstC};
intdiv 函數
執行整數除法並返回int
$value = intdiv(10,3);
print($value); //3
session支持數組參數
session_start([
'cache_limiter' => 'private',
'read_and_close' => true,
]);
php7棄用的功能
1. 類和方法的名稱相同, 不行
class A {
function A(){
...
}
}
2. 不能調用非靜態方法
class A {
function b(){
...
}
}
A::b(); //錯!