這篇文章主要為大家展示了“PHP7中新特性有哪些”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“PHP7中新特性有哪些”這篇文章吧。

類型聲明
代碼:
class person
{
public function age(int $age) : string
{
return 'Age is ' . $age;
}
}命名空間與use關(guān)鍵字批量聲明
非混合模式
use Publishers\Packt\{ Book, Ebook, Video};
use function Publishers\Packt\{ getBook, saveBook };
use const Publishers\Packt\{ COUNT, KEY };混合模式
use Publishers\Packt\{
Book,
Ebook,
Video,
function getBook,
function saveBook,
const COUNT,
const KEY
};復(fù)合模式
use Publishers\Packt\{
Paper\Book,
Electronic\Ebook,
Media\Video
};匿名類
匿名類的聲明與使用時(shí)同時(shí)進(jìn)行的,具備其他類所具備的所以功能,區(qū)別在于匿名類沒(méi)有類名。語(yǔ)法如下:
new class(argument) { definition };匿名類是沒(méi)有類名的,但在PHP內(nèi)部,會(huì)在內(nèi)存的引用地址表中為其分配一個(gè)全局唯一的名稱。
$name = new class('You') {
public function __construct($name)
{
echo $name;
}
};匿名類可以繼承父類及父類的方法。
class Packt
{
protected $number;
public function __construct()
{
echo 'parent construct';
}
public function getNumber() : float
{
return $this->number;
}
}
$number = new class(5) extends Packt
{
public function __construct(float $number)
{
parent::__construct();
$this->number = $number;
}
};
echo $number->getNumber();匿名類可以繼承接口。
interface Publishers
{
public function __construct(string name, string address);
public function getName();
public function getAddress();
}
class packt
{
protected $number;
protected $name;
protected $address;
public function ...
}
$info = new class('name', 'address') extends Packt implement Publishers
{
public function __construct(string $name, string $address)
{
$this->name = $name;
$this->address = $address;
}
public function getName() : string
{
return $this->name;
}
public function getAddress() : string
{
return $this->address;
}
}
echo $info->getName() . ' ' . $info->getAddress();匿名類可以嵌套在一個(gè)類中使用。
class Math
{
public $first_number = 10;
public $second_number = 10;
public function add() : float
{
return $this->first_number + $this->second_number;
}
public function mutiply_sum()
{
return new class() extends Math
{
public function mutiply(float $third_number) : float
{
return $this->add() * $third_number;
}
};
}
}
$math = new Math();
echo $math->mutiply_sum()->mutiply(2);摒棄老式構(gòu)造函數(shù)
從PHP4開始,構(gòu)造函數(shù)可以通過(guò)命名與類名一致的方式來(lái)聲明自己是構(gòu)造函數(shù),在PHP7中這種方式聲明構(gòu)造函數(shù)依然可以使用,但不推薦使用,會(huì)輸出不推薦的信息 Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Packt has a deprecated constructor in ...,PHP7中推薦使用 __construct()。
throwable接口
從PHP7開始,程序中的fatal錯(cuò)誤都可以被截獲,PHP7提供了throwable接口,異常與錯(cuò)誤都繼承于這個(gè)接口。
Error
現(xiàn)在大多數(shù)的fatal錯(cuò)誤情況會(huì)拋出一個(gè)error實(shí)例,類似于截獲異常,error實(shí)例可以被try/catch截獲。
try
{
...
} catch(Error $e)
{
echo $e->getMessage();
}一些錯(cuò)誤情況只有error的子實(shí)例會(huì)被拋出,例如 TypeError、DivisionByZeroError、ParseError等。
<=>操作符
<=>操作符將==、<、>三個(gè)比較操作符打包在了一起,具體使用規(guī)則如下。
操作符兩邊相等時(shí)返回 0
操作符左邊小于右邊時(shí)返回 -1
操作符左邊大于右邊時(shí)返回 1
null合并運(yùn)算符
?? 合并運(yùn)算符,在第一操作數(shù)存在時(shí)可被直接返回,否則返回第二操作數(shù)。
$title = $post['title'] ?? NULL; $title = $post['title'] ?? $get['title'] ?? 'No title';
uniform變量語(yǔ)法
$first = ['name' => 'second'];
$second = 'two';
echo $$first['name'];
echo ${Sfirst['name']}; // PHP7
...
echo $object->$methods['title'];
echo $object->{$methods['title']}; // PHP7主要是因?yàn)镻HP7與之前版本PHP的解析方式不一樣,在PHP7中加上花括號(hào)就可以啦,就像上邊代碼這樣,否則會(huì)報(bào)錯(cuò)。
常量數(shù)組
從PHP5.6開始常量數(shù)組可以用const關(guān)鍵字來(lái)聲明,在PHP7中常量數(shù)組可以通過(guò)define函數(shù)來(lái)初始化。
const STORES = ['en', 'fr', 'ar']; // php5.6
define('STORES', ['en', 'fr', 'ar']); // php7switch中的default默認(rèn)值
在PHP7之前,switch語(yǔ)句中允許多個(gè)default默認(rèn)值,從PHP7開始,只能有一個(gè)default默認(rèn)值,否則會(huì)產(chǎn)生fatal級(jí)別錯(cuò)誤。
// php7之前
switch (true) {
case 'value':
# code...
break;
default:
# code...
break;
default:
# code...
break;
}
// php7
switch (true) {
case 'value':
# code...
break;
default:
# code...
break;
}session_start函數(shù)中的選項(xiàng)數(shù)組
在PHP7之前,使用session的時(shí)候都必須先調(diào)用session_start()函數(shù),且這個(gè)函數(shù)并沒(méi)有參數(shù)需要傳遞,所有session相關(guān)的配置都在php.ini文件中,從PHP7開始,可以在調(diào)用這個(gè)函數(shù)時(shí)傳遞參數(shù)選項(xiàng)數(shù)組,這些設(shè)置信息將覆蓋php.ini中的session配置。
session_start([ 'cookie_lifetime' => 3600, 'read_and_close' => true ]);
unserialize函數(shù)引入過(guò)濾器
unserialize()可以反序列化任何類型的對(duì)象,沒(méi)有任何過(guò)濾項(xiàng),不安全,PHP7在unserialize()中引入了過(guò)濾器,且默認(rèn)允許反序列化所有類型的對(duì)象。
$result = unserialize($object, ['allowed_classes' => ['Book', 'Ebook']]);
以上是“PHP7中新特性有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站chinadenli.net,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
分享文章:PHP7中新特性有哪些-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://chinadenli.net/article16/cdosdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、搜索引擎優(yōu)化、網(wǎng)站維護(hù)、ChatGPT、域名注冊(cè)、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容