亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP7.0和php7.1中的語法新特性的總結

2020-03-22 17:52:51
字體:
來源:轉載
供稿:網友
本篇文章給大家帶來的內容是關于PHP7.0和php7.1中的語法新特性的總結,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

php7.0的新特性:

1、空合并運算符(??)

簡化判斷

$param = $_GET[ param ] ?? 1;

相當于:

$param = isset($_GET[ param ]) ? $_GET[ param ] : 1;

2、變量類型聲明

兩種模式 : 強制 ( 默認 ) 和 嚴格模式
類型:string、int、float和 bool

function add(int $a) {  return 1+$a; var_dump(add(2);

3、返回值類型聲明

函數和匿名函數都可以指定返回值的類型

function show(): array {  return [1,2,3,4]; function arraysSum(array ...$arrays): array {return array_map(function(array $array): int {return array_sum($array);}, $arrays);}

4、太空船操作符(組合比較符)

太空船操作符用于比較兩個表達式。當 a大于、等于或小于 b 時它分別返回 -1 、 0 或 1 。 比較的原則是沿用 PHP 的常規比較規則進行的。

// Integersecho 1 = // 0echo 1 = // -1echo 2 = // 1// Floatsecho 1.5 = 1.5; // 0echo 1.5 = 2.5; // -1echo 2.5 = 1.5; // 1// Stringsecho a = a // 0echo a = b // -1echo b = a // 1

5、匿名類

現在支持通過 new html' target='_blank'>class 來實例化一個匿名類,這可以用來替代一些“用后即焚”的完整類定義。

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());

6、Unicode codepoint 轉譯語法

這接受一個以16進制形式的 Unicode codepoint,并打印出一個雙引號或heredoc包圍的 UTF-8 編碼格式的字符串。 可以接受任何有效的 codepoint,并且開頭的 0 是可以省略的。

 echo /u{9876} 

舊版輸出:/u{9876}
新版輸入:頂

7、Closure::call()

Closure::call() 現在有著更好的性能,簡短干練的暫時綁定一個方法到對象上閉包并調用它。

class Test { public $name = lixuan //PHP7和PHP5.6都可以$getNameFunc = function () { return $this- name;$name = $getNameFunc- bindTo(new Test, Test echo $name();//PHP7可以,PHP5.6報錯$getX = function () { return $this- name;echo $getX- call(new Test);

8、為unserialize()提供過濾

這個特性旨在提供更安全的方式解包不可靠的數據。它通過白名單的方式來防止潛在的代碼注入。

//將所有對象分為__PHP_Incomplete_Class對象$data = unserialize($foo, [ allowed_classes = false]);//將所有對象分為__PHP_Incomplete_Class 對象 除了ClassName1和ClassName2$data = unserialize($foo, [ allowed_classes = [ ClassName1 , ClassName2 ]);//默認行為,和 unserialize($foo)相同$data = unserialize($foo, [ allowed_classes = true]);

9、IntlChar

新增加的 IntlChar 類旨在暴露出更多的 ICU 功能。這個類自身定義了許多靜態方法用于操作多字符集的 unicode 字符。Intl是Pecl擴展,使用前需要編譯進PHP中,也可apt-get/yum/port install php5-intl

printf( %x , IntlChar::CODEPOINT_MAX);echo IntlChar::charName( @ var_dump(IntlChar::ispunct( ! 

以上例程會輸出:
10ffff
COMMERCIAL AT
bool(true)

10、預期

預期是向后兼用并增強之前的 assert() 的方法。 它使得在生產環境中啟用斷言為零成本,并且提供當斷言失敗時拋出特定異常的能力。 老版本的API出于兼容目的將繼續被維護,assert()現在是一個語言結構,它允許第一個參數是一個表達式,而不僅僅是一個待計算的 string或一個待測試的boolean。

ini_set( assert.exception , 1);class CustomError extends AssertionError {}assert(false, new CustomError( Some error message 

以上例程會輸出:
Fatal error: Uncaught CustomError: Some error message

11、Group use declarations

從同一 namespace 導入的類、函數和常量現在可以通過單個 use 語句 一次性導入了。

//PHP7之前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;// PHP7之后use some/namespace/{ClassA, ClassB, ClassC as C};use function some/namespace/{fn_a, fn_b, fn_c};use const some/namespace/{ConstA, ConstB, ConstC};

12、intp()

接收兩個參數作為被除數和除數,返回他們相除結果的整數部分。

var_dump(intp(7, 2));

輸出int(3)

13、CSPRNG

新增兩個函數: random_bytes() and random_int().可以加密的生產被保護的整數和字符串??傊S機數變得安全了。
random_bytes — 加密生存被保護的偽隨機字符串
random_int —加密生存被保護的偽隨機整數

14、preg_replace_callback_array()

新增了一個函數preg_replace_callback_array(),使用該函數可以使得在使用preg_replace_callback()函數時代碼變得更加優雅。在PHP7之前,回調函數會調用每一個正則表達式,回調函數在部分分支上是被污染了。

15、Session options

現在,session_start()函數可以接收一個數組作為參數,可以覆蓋php.ini中session的配置項。
比如,把cache_limiter設置為私有的,同時在閱讀完session后立即關閉。

session_start([ cache_limiter = private , read_and_close = true,]);

16、生成器的返回值

在PHP5.5引入生成器的概念。生成器函數每執行一次就得到一個yield標識的值。在PHP7中,當生成器迭代完成后,可以獲取該生成器函數的返回值。通過Generator::getReturn()得到。

function generator() { yield 1; yield 2; yield 3; return a $generatorClass = ( generator )();foreach ($generatorClass as $val) { echo $val . echo $generatorClass- getReturn();

輸出為:1 2 3 a

17、生成器中引入其他生成器

在生成器中可以引入另一個或幾個生成器,只需要寫yield from functionName1

function generator1() { yield 1; yield 2; yield from generator2(); yield from generator3();function generator2() { yield 3; yield 4;function generator3() { yield 5; yield 6;foreach (generator1() as $val) { echo $val, }

輸出:1 2 3 4 5 6

18、通過define()定義常量數組

define( ANIMALS , [ dog , cat , bird echo ANIMALS[1]; // outputs cat 

php7.1的新特性:

1、可為空(Nullable)類型

類型現在允許為空,當啟用這個特性時,傳入的參數或者函數返回的結果要么是給定的類型,要么是 null ??梢酝ㄟ^在類型前面加上一個問號來使之成為可為空的。

function test(?string $name) { var_dump($name);}

以上例程會輸出:

string(5) tpunt Uncaught Error: Too few arguments to function test(), 0 passed in...

2、Void 函數

在PHP 7 中引入的其他返回值類型的基礎上,一個新的返回值類型void被引入。 返回值聲明為 void 類型的方法要么干脆省去 return 語句,要么使用一個空的 return 語句。 對于 void 函數來說,null 不是一個合法的返回值。

function swap( $left, $right) : void { if ($left === $right) { return; $tmp = $left; $left = $right; $right = $tmp;$a = 1;$b = 2;var_dump(swap($a, $b), $a, $b);

以上例程會輸出:

nullint(2)int(1)

試圖去獲取一個 void 方法的返回值會得到 null ,并且不會產生任何警告。這么做的原因是不想影響更高層次的方法。

3、短數組語法 Symmetric array destructuring

短數組語法([])現在可以用于將數組的值賦給一些變量(包括在foreach中)。 這種方式使從數組中提取值變得更為容易。

$data = [ [ id = 1, name = Tom ], [ id = 2, name = Fred ],while ([ id = $id, name = $name] = $data) { // logic here with $id and $name}

4、類常量可見性

現在起支持設置類常量的可見性。

class ConstDemo const PUBLIC_CONST_A = 1; public const PUBLIC_CONST_B = 2; protected const PROTECTED_CONST = 3; private const PRIVATE_CONST = 4;}

5、iterable 偽類

現在引入了一個新的被稱為iterable的偽類 (與callable類似)。 這可以被用在參數或者返回值類型中,它代表接受數組或者實現了Traversable接口的對象。 至于子類,當用作參數時,子類可以收緊父類的iterable類型到array 或一個實現了Traversable的對象。對于返回值,子類可以拓寬父類的 array或對象返回值類型到iterable。

function iterator(iterable $iter) { foreach ($iter as $val) {}

6、多異常捕獲處理

一個catch語句塊現在可以通過管道字符(|)來實現多個異常的捕獲。 這對于需要同時處理來自不同類的不同異常時很有用。

try { // some code} catch (FirstException | SecondException $e) { // handle first and second exceptions} catch (/Exception $e) { // ...}

7、list()現在支持鍵名

現在list()支持在它內部去指定鍵名。這意味著它可以將任意類型的數組 都賦值給一些變量(與短數組語法類似)

$data = [ [ id = 1, name = Tom ], [ id = 2, name = Fred ],while (list( id = $id, name = $name) = $data) { // logic here with $id and $name}

8、支持為負的字符串偏移量

現在所有接偏移量的內置的基于字符串的函數都支持接受負數作為偏移量,包括數組解引用操作符([]).

var_dump( abcdef [-2]);var_dump(strpos( aabbcc , b , -3));

以上例程會輸出:

string (1) e int(3)

9、ext/openssl 支持 AEAD

通過給openssl_encrypt()和openssl_decrypt() 添加額外參數,現在支持了AEAD (模式 GCM and CCM)。
通過 Closure::fromCallable() 將callables轉為閉包
Closure新增了一個靜態方法,用于將callable快速地 轉為一個Closure 對象。

class Test { public function exposeFunction() { return Closure::fromCallable([$this, privateFunction  private function privateFunction($param) { var_dump($param);$privFunc = (new Test)- exposeFunction();$privFunc( some value 

以上例程會輸出:

string(10) some value 

10、異步信號處理 Asynchronous signal handling

A new function called pcntl_async_signals() has been introduced to enable asynchronous signal handling without using ticks (which introduce a lot of overhead).
增加了一個新函數 pcntl_async_signals()來處理異步信號,不需要再使用ticks(它會增加占用資源)

pcntl_async_signals(true); // turn on async signalspcntl_signal(SIGHUP, function($sig) { echo SIGHUP/n posix_kill(posix_getpid(), SIGHUP);

以上例程會輸出:

SIGHUP

11、HTTP/2 服務器推送支持 ext/curl

Support for server push has been added to the CURL extension (requires version 7.46 and above). This can be leveraged through the curl_multi_setopt() function with the new CURLMOPT_PUSHFUNCTION constant. The constants CURL_PUST_OK and CURL_PUSH_DENY have also been added so that the execution of the server push callback can either be approved or denied.
翻譯:
對于服務器推送支持添加到curl擴展(需要7.46及以上版本)。
可以通過用新的CURLMOPT_PUSHFUNCTION常量 讓curl_multi_setopt()函數使用。
也增加了常量CURL_PUST_OK和CURL_PUSH_DENY,可以批準或拒絕 服務器推送回調的執行

相關文章推薦:

php7和php5有什么不同之處?php5與php7之間的對比

PHP新特性:finally關鍵字的用法

以上就是PHP7.0和php7.1中的語法新特性的總結的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产亚洲欧洲高清| 国产成人自拍视频在线观看| 91极品女神在线| 亚洲精品中文字幕av| 亚洲一区美女视频在线观看免费| 久久久人成影片一区二区三区| 色视频www在线播放国产成人| 欧美日韩中文在线| 国产一区二区久久精品| 日韩一区二区三区在线播放| 国产精品亚洲一区二区三区| 欧美日韩亚洲一区二区三区| 一区二区三区视频免费在线观看| 亚洲一区二区三区成人在线视频精品| 国产欧美欧洲在线观看| 中文字幕亚洲一区二区三区| 川上优av一区二区线观看| 91国自产精品中文字幕亚洲| 日韩极品精品视频免费观看| 日韩久久精品电影| 久久久久久久999精品视频| 九九热99久久久国产盗摄| 国产欧美最新羞羞视频在线观看| 久久久综合免费视频| 亚洲一区二区在线| 在线观看日韩www视频免费| 国产综合在线看| 97av在线视频| 中文字幕久热精品视频在线| 91久久精品久久国产性色也91| 国产精品一区二区久久国产| 欧美亚洲国产日韩2020| 亚洲色图偷窥自拍| 精品国产欧美成人夜夜嗨| 亚洲free性xxxx护士hd| 国产精品久久久久久五月尺| 亚洲成人网久久久| 精品视频久久久久久久| 色偷偷偷亚洲综合网另类| 亚洲精品网址在线观看| 热99久久精品| 欧美人在线观看| 国产亚洲a∨片在线观看| 亚洲a在线播放| 欧美成人一二三| 久久精品视频一| 亚洲综合社区网| 亚洲欧美国产另类| 欧美极品在线视频| 亚洲色图欧美制服丝袜另类第一页| 日韩在线免费视频| 精品呦交小u女在线| 亚洲精品一区在线观看香蕉| 国产一区深夜福利| 欧美日韩一区二区在线| 亚洲免费人成在线视频观看| 亚洲男人天天操| 91精品国产高清久久久久久久久| 欧美激情视频一区二区| 亚洲xxxx在线| 国产精品热视频| 国产视频欧美视频| 欧美成人精品xxx| 欧美日本啪啪无遮挡网站| 欧美极品美女视频网站在线观看免费| 自拍偷拍亚洲在线| wwwwwwww亚洲| 国产精品中文字幕在线观看| 日本成熟性欧美| 青青久久av北条麻妃海外网| 91久久精品国产91性色| 国产成人一区二区在线| 亚洲午夜激情免费视频| 亚洲视频欧美视频| 久久男人的天堂| 久久电影一区二区| 中文字幕欧美日韩精品| 国产精品久久在线观看| 国产精自产拍久久久久久蜜| 岛国视频午夜一区免费在线观看| 色妞在线综合亚洲欧美| 久久偷看各类女兵18女厕嘘嘘| 国产999精品久久久| 91亚洲精品久久久久久久久久久久| 精品国产欧美一区二区三区成人| 在线日韩欧美视频| 中文字幕视频一区二区在线有码| 福利视频导航一区| 亚洲无线码在线一区观看| 亚洲第一页中文字幕| 69av成年福利视频| 亚洲午夜av电影| 一级做a爰片久久毛片美女图片| 国产美女被下药99| 韩国欧美亚洲国产| 亚洲成色999久久网站| 日本亚洲欧洲色| 日韩中文字幕网站| 日韩电影中文 亚洲精品乱码| 欧美国产日韩一区| 日韩风俗一区 二区| 久久琪琪电影院| 黑人狂躁日本妞一区二区三区| 久久久久国色av免费观看性色| 国产精品视频自在线| 国产成人一区二区三区小说| 国语对白做受69| 国产成人精品优优av| 久久人人爽人人爽人人片亚洲| 日韩有码在线视频| 日韩av在线免费播放| 精品国产乱码久久久久久婷婷| 成人网址在线观看| 欧美成人精品xxx| 日韩网站在线观看| 欧美国产精品人人做人人爱| 在线精品视频视频中文字幕| 92看片淫黄大片看国产片| 国产极品jizzhd欧美| 欧美一区二区三区精品电影| 在线观看精品国产视频| 午夜欧美不卡精品aaaaa| 伊人伊成久久人综合网站| 日韩免费在线视频| 中文在线资源观看视频网站免费不卡| 伊人久久精品视频| 日本久久久久久久久久久| 亚洲免费小视频| 精品亚洲va在线va天堂资源站| 亚州精品天堂中文字幕| 久久久久久国产| 精品视频中文字幕| 欧美日韩国产成人在线观看| 一本色道久久88综合日韩精品| 91精品国产91久久久久久久久| 黄色成人av网| 国产99在线|中文| 亚洲天堂影视av| 欧美精品性视频| 一区二区三区无码高清视频| 欧美夫妻性视频| 日韩在线视频观看正片免费网站| 精品亚洲永久免费精品| 国产精品亚洲欧美导航| 国产精品白嫩美女在线观看| 国产欧美日韩91| 精品亚洲永久免费精品| 午夜精品福利在线观看| 久久韩剧网电视剧| 亚洲品质视频自拍网| 久久精品中文字幕一区| 久久精品美女视频网站| 欧美激情视频在线免费观看 欧美视频免费一| 久久久黄色av| 中文字幕自拍vr一区二区三区| 国内成人精品视频| 日韩av免费看网站| 国产精品久久久久久av福利| 欧美日韩国产综合视频在线观看中文| 国产亚洲欧美aaaa| 亚洲国产成人久久综合一区| 国产精品亚洲一区二区三区| 在线精品高清中文字幕| 日韩欧美高清在线视频|