php新特性你知道多少

2021-08-02 08:49:57 字數 1374 閱讀 7012

1. ?? 運算子(null 合併運算子) 把這個放在第乙個說是因為我覺得它很有用。用法: $a = $_get['a'] ?? 1;它相當於: php$a = isset($_get['a']) ? $_get['a'] : 1; 我們知道三元運算子是可以這樣用的: $a ?: 1但是這是建立在 $a 已經定義了的前提上。

1. ?? 運算子(null 合併運算子)

把這個放在第乙個說是因為我覺得它很有用。用法:

$a=$_get['a']??1;

它相當於:

$a=isset($_get['a'])?$_get['a']:1;

我們知道三元運算子是可以這樣用的:

$a?:1

但是這是建立在 $a 已經定義了的前提上。新增的 ?? 運算子可以簡化判斷。

2. 函式返回值型別宣告

官方文件提供的例子(注意...的邊長引數語法在 php 5.6 以上的版本中才有):

functionarrayssum(array...$arrays):array

returnarray_map(function(array$array):int,$arrays);

print_r(arrayssum([1,2,3],[4,5,6],[7,8,9]));

從這個例子中可以看出現在函式(包括匿名函式)都可以指定返回值的型別。

這種宣告的寫法有些類似於swift:

func sayhello(personname:string)->string;

usefunctionsome\namespace\;

useconstsome\namespace\;

但還是要寫出每個類或函式或 const 的名稱(並沒有像python一樣的from some import *的方法)。

需要留意的問題是:如果你使用的是基於 composer 和 psr-4 的框架,這種寫法是否能成功的載入類檔案?其實是可以的,composer 註冊的自動載入方法是在類被呼叫的時候根據類的命名空間去查詢位置,這種寫法對其沒有影響。

5. 其他的特性

其他的一些特性我就不一一介紹了,有興趣可以檢視官方文件:

簡要說幾個:

php 5.3 開始有了匿名函式,現在又有了匿名類了;

define 現在可以定義常量陣列;

閉包(closure)增加了乙個 call 方法;

生成器(或者叫迭代器更合適)可以有乙個最終返回值(return),也可以通過yield from的新語法進入乙個另外乙個生成器中(生成器委託)。

生成器的兩個新特性(return 和yield from)可以組合。具體的表象大家可以自行測試。php 7 現在已經到 rc5 了,最終的版本應該會很快到來。

網際網路+時代,時刻要保持學習,攜手千鋒php,dream it possible。

PHP 7 新特性你知道多少?

1.運算子 null 合併運算子 把這個放在第乙個說是因為我覺得它很有用。用法 a get a 1 它相當於 把這個放在第乙個說是因為我覺得它很有用。用法 a get a 1 它相當於 a isset get a get a 1 我們知道三元運算子是可以這樣用的 a 1 但是這是建立在 a 已經定義...

PHP 7 新特性你知道多少?

1.運算子 null 合併運算子 把這個放在第乙個說是因為我覺得它很有用。用法 a get a 1 它相當於 把這個放在第乙個說是因為我覺得它很有用。用法 a get a 1 它相當於 a isset get a get a 1 我們知道三元運算子是可以這樣用的 a 1 但是這是建立在 a 已經定義...

sizeof,你知道多少

今天去參加面試,筆試的第一道題就是這個sizeof的用法,考了六七個,平時覺得很熟,真拿來考到迷糊了。有必要再總結一下。題是這樣的 在32位作業系統環境下,請問以下sizeof的值各是多少。一 int p 10 sizeof p 這個就簡單,int型變數p佔4個位元組,答案就是4.二 char p ...