1、函式的行參型別可以是標量,在 php 5 中只能是類名、介面、array 或者 callable (php 5.4,即可以是函式,包括匿名函式),現在也可以使用 string、int、float和 bool 了。標量的模式有強制模式和嚴格模式兩種,
模式宣告:declare(strict_types=1); 預設情況值為0,值為1代表為嚴格校驗的模式
強制模式:
嚴格模式:
很明顯上面同樣的**設定不同的模式會有不同的效果,嚴格模式必須按照指定的型別傳值,不然會報錯。
2、返回值型別宣告:
下面這個宣告的返回值是陣列,則只能返回陣列加入返回其他型別就會報錯
3、null合併運算子??
null 合併運算子使得變數存在且值不為null, 它就會返回自身的值,否則返回它的第二個運算元。
上面的當$a=null或$a不存在時返回『不存在』,其他都返回$a的值;
4、太空船操作符(組合比較符)
太空船操作符用於比較兩個表示式。當$a大於、等於或小於$b時它分別返回-1、0或1。
<?php5、通過define()定義常量陣列// 整型
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// 浮點型
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// 字串
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
?>
輸出 "cat"
6、匿名類:
<?php
//php7以前 介面實現
inte***ce user
class vipuser implements user
}class goods
}$display = new goods();
//常規例項化介面實現物件
$display ->getuserdata(new vipuser);//商品**:120
<?php
//php7 建立乙個匿名的物件
inte***ce user
class goods
}$display = new goods();
//new匿名物件實現user介面
$display ->getuserdata(new class implements user
});//商品**:120
7、為unserialize()提供過濾
這個特性旨在提供更安全的方式解包不可靠的資料。它通過白名單的方式來防止潛在的**注入。
<?php
// 轉換物件為 __php_incomplete_class 物件
$data = unserialize($foo, ["allowed_classes" => false]);
// 轉換物件為 __php_incomplete_class 物件,除了 myclass 和 myclass2
$data = unserialize($foo, ["allowed_classes" => ["myclass", "myclass2"]);
// 預設接受所有類
$data = unserialize($foo, ["allowed_classes" => true]);
8、intlchar
新增加的 intlchar 類旨在暴露出更多的 icu 功能。這個類自身定義了許多靜態方法用於操作多字符集的 unicode 字元。
<?php
printf('%x', intlchar::codepoint_max);
echo intlchar::charname('@');
var_dump(intlchar::ispunct('!'));
以上例項會輸出:
10ffff
commercial at
bool(true)
若要使用此類,請先安裝intl擴充套件
9、預期
預期是向後兼用並增強之前的 assert() 的方法。 它使得在生產環境中啟用斷言為零成本,並且提供當斷言失敗時丟擲特定異常的能力。
<?php
ini_set('assert.exception', 1);
class customerror extends assertionerror {}
assert(false, new customerror('some error message'));
?>
以上例項會輸出:
fatal error: uncaught customerror: some error message
10、use 加強
從同一 namespace 匯入的類、函式和常量現在可以通過單個 use 語句 一次性匯入了。
<?php
// php 7 之前版本用法
use some\namespace\classa;
use some\namespace\classb;
use some\namespace\classc as c;
use function some\namespace\fn_a;
use function some\namespace\fn_b;
use function some\namespace\fn_c;
use const some\namespace\consta;
use const some\namespace\constb;
use const some\namespace\constc;
// php 7+ 用法
use some\namespace\;
use function some\namespace\;
use const some\namespace\;
?>
11、generator 加強
增強了generator的功能,這個可以實現很多先進的特性
<?php
<?php
function gen()
function gen2()
foreach (gen() as $val)
以上例項會輸出:12
3412、整除
新增了整除函式 intdiv(),使用例項:
echo intdiv(10, 3);//3
PHP 7 的新特徵
我們知道php是一種弱型別的程式語言,因此沒有提供任何方法來指定輸入引數和返回值的型別,php7突破了這種現狀,增加了對標量型別 int,float,string,bool 的宣告支援,增加declare strict types 1 指令宣告是否嚴格型別校驗,我們來看一段 declare stri...
php7的新特性
截止到目前為止,php官方已經發布了php7的rc5版本,預計在11月份左右會發布第乙個正式版本!現在來說php7的重大特性肯定已經是定型了,不會再有什麼變動了。後續一些版本的迭代主要也就是修修bug,優化之類的。下面就來說話我們一直期待的php7.0新特徵吧。1.標量引數型別宣告 現在支援字串 s...
PHP7的新特性
php7 從發布到現在已經有快三年的時間了,現在已經發展到 php7.2.9 版本了。它的發布給 php 帶來了很大的效能提公升,這主要是得益於 php 對 zend 引擎的深度優化,同時還降低了 php 對系統的資源占用。主要的變化有以下幾點 在php之前的版本中,php 在語法解析階段直接生成了...