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

首頁 > 語言 > PHP > 正文

php7新特性的理解和比較總結

2024-05-05 00:08:27
字體:
來源:轉載
供稿:網友

1. null合并運算符(??)

語法: 如果變量存在且值不為NULL,它就會返回自身的值,否則返回它的第二個操作數.

//php7以前 if判斷 if(empty($_GET['param'])) {   $param = 1; }else{  $param = $_GET['param']; }  //php7以前 三元運算符 $param = empty($_GET['param']) ? 1 : $_GET['param']; //PHP7 null合并運算符  $param = $_GET['param'] ?? 1;//1

2. define() 定義常量數組

//php7以前  define("CONTENT", "hello world");  echo CONTENT;//hello world   //PHP7  define('ANIMALS', [  'dog',   'cat',  'bird']); echo ANIMALS[2];//bird  //PHP7 類外也可使用const來定義常量 const CONSTANT = 'Hello World';  echo CONSTANT;//Hello World

3. 組合比較符(<=>)

組合比較符用于比較兩個表達式.當$a小于、等于或大于$b時它分別返回-1、0或1. 比較的原則是沿用PHP的常規比較規則進行的.

/整數 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"; // 0echo "a" <=> "b"; // -1echo "b" <=> "a"; // 1

4. 變量類型聲明

兩種模式: 強制(默認)和嚴格模式. 可以使用下列類型參數: string,int,float,bool

//... 操作符: 表示這是一個可變參數. php5.6及以上的版本可使用: 函數定義的時候變量前使用.  function intSum(int ...$ints){  return array_sum($ints);  } var_dump(intSum(2,'3.5'));//5   //嚴格模式  //模式聲明:declare(strict_types=1); 默認情況值為0,值為1代表為嚴格校驗的模式  declare(strict_types=1); function add(int $a,int $b){  return $a+$b; } var_dump(add(2,'3.5')); //Fatal error: Uncaught TypeError: Argument 2 passed to add() must be of the type integer

5. 返回值類型聲明

增加返回類型聲明的支持.類似于參數類型聲明.(用法在函數定義的后面加 :類型名)

//有效的返回類型declare(strict_types = 1); function getInt(int $value): int { return $value; } print(getInt(6));//6
//無效返回類型declare(strict_types = 1); function getNoInt(int $value): int { return $value+'2.5'; } print(getNoInt(6));//Fatal error: Uncaught TypeError: Return value of getNoInt() must be of the type integer

6. 匿名類

允許new class {} 創建一個匿名的對象.

<?php //php7以前 接口實現 interface User{  public function getDiscount(); } class VipUser implements User{  //折扣系數  private $discount = 0.6;  public function getDiscount() {  return $this->discount; }}class Goods{ private $price = 200; private $objectVipUser; //User接口VipUser類實現 public function getUserData($User){  $this->objectVipUser = $User;  $discount = $this->objectVipUser->getDiscount();  echo "商品價格:".$this->price*$discount; }}$display = new Goods();//常規實例化接口實現對象$display ->getUserData(new VipUser);//商品價格:120
<?php //php7 創建一個匿名的對象 interface User{  public function getDiscount(); } class Goods{  private $price = 200;  private $objectVipUser;  public function getUserData($User){  $this->objectVipUser = $User;  $discount = $this->objectVipUser->getDiscount();  echo "商品價格:".$this->price*$discount; }}$display = new Goods();//new匿名對象實現user接口$display ->getUserData(new class implements User{ private $discount = 0.6; public function getDiscount() {  return $this->discount; }});//商品價格:120

7. Closure::call()

Closure::call() 方法被添加為一個簡短的方式來臨時綁定一個對象作用域到一個閉包并調用它. 與PHP5的bindTo相比.它的性能要快得多.

<?php //php7以前 class A {  private $attribute = 'hello world'; }  $getClosure = function(){  return $this->attribute; }; $getAttribute = $getClosure->bindTo(new A, 'A');//中間層閉包echo $getAttribute();//hello world
<?php //PHP7 class A {  private $attribute = 'hello world'; }  $getClosure = function(){  return $this->attribute; }; echo $getClosure->call(new A);//hello world

8. unserialize()

unserialize()函數:過濾的特性,可以防止非法數據進行代碼注入,提供了更安全的反序列化數據

<?php  class A{   public $name = 'admin_a';  }  class B{   public $name = 'admin_b';  }  $objA = new A();  $objB = new B();  $serializedObjA = serialize($objA);  $serializedObjB = serialize($objB);  //默認行為是接收所有類; 第二個參數可以忽略 $dataA = unserialize($serializedObjA , ["allowed_classes" => true]);  var_dump($dataA);//object(A)#3 (1) { ["name"]=> string(7) "admin_a" }//如果allowed_classes設置為false,unserialize會將所有對象轉換為__PHP_Incomplete_Class對象  $dataA = unserialize($serializedObjA , ["allowed_classes" => false]);  var_dump($dataA);//object(__PHP_Incomplete_Class)#4 (2) { ["__PHP_Incomplete_Class_Name"]=> string(1) "A" ["name"]=> string(7) "admin_a" }//轉換所有對象到 __PHP_Incomplete_Class對象,除了對象"B" $dataB = unserialize($serializedObjB , ["allowed_classes" => ["B"]]); var_dump($dataB);//object(B)#3 (1) { ["name"]=> string(7) "admin_b" }

9. IntlChar

IntlChar:提供了一些可用于訪問Unicode字符信息的實用方法的訪問. 注意:必須安裝Intl擴展才能使用!

var_dump(IntlChar::CODEPOINT_MAX);//int(1114111) echo '<br>';var_dump(IntlChar::charName('+'));//string(9) "PLUS SIGN" echo '<br>';var_dump(IntlChar::ispunct('?'));//bool(true)

10. CSPRNG

CSPRNG 函數提供一種簡單的機制來生成密碼的隨機數.

random_bytes() -加密生存被保護的偽隨機字符串.

random_int() -加密生存被保護的偽隨機整數.

$bytes = random_bytes(8); echo(bin2hex($bytes));//隨機2073a110a2e3c497echo '<br>';echo(random_int(1, 999));//隨機786echo '<br>';print(random_int(-999, -1));//隨機-357

11. use 語句

可以使用單個use語句從相同的命名空間導入類,函數和常量,而不是使用多個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

新增加intp()函數,接收兩個參數,返回值為第一個參數除于第二個參數的值并取整.

echo intp(8,4);//2echo intp(10,4);//2echo intp(5,10);//0

13. PHP7 錯誤處理

PHP7 改變了大多數錯誤的報告方式.不同于PHP5的傳統錯誤報告機制,現在大多數錯誤被作為Error異常拋出.

這種Error異常可以像普通異常一樣被try / catch塊所捕獲. 如果沒有匹配的try / catch塊,則調用異常處理函數(由 set_exception_handler() 注冊)進行處理.

如果尚未注冊異常處理函數,則按照傳統方式處理:被報告為一個致命錯誤(Fatal Error).

 

Error類并不是從Exception類擴展出來的,所以用catch (Exception $e) { ... } 這樣的代碼是捕獲不到Error的.你可以用 catch (Error $e) { ... } 這樣的代碼,

或者通過注冊異常處理函數( set_exception_handler())來捕獲Error.

php7,新特性

<?php //php7以前 自定義異常處理 class getException extends Exception{  public function errorMsg(){   return '錯誤的信息'.$this->getMessage().'<br>錯誤的代碼'.$this->getCode();  } }  try { $num =10; if($num > 1) {  throw new getException($num,404); }} catch (getException $e) { echo $e->errorMsg(); }
<?php //php7 異常處理try { test();}catch(Error $e) { echo $e->getMessage();//Call to undefined function test()  }
 


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色婷婷综合成人| 亚洲free性xxxx护士hd| 亚洲欧美另类在线观看| 国产亚洲a∨片在线观看| 中文字幕久热精品在线视频| 欧美视频免费在线| 成人伊人精品色xxxx视频| 欧美诱惑福利视频| 日韩欧美在线免费观看| 亚洲激情在线视频| 国产成人精品亚洲精品| 欧美裸体男粗大视频在线观看| 久久99久久亚洲国产| 国内精品久久久久伊人av| 亚洲福利视频网| 国产精品亚洲精品| 欧美极品少妇与黑人| 91精品久久久久久久久青青| 日韩精品在线观看一区二区| 91chinesevideo永久地址| 国产精品稀缺呦系列在线| 97视频免费在线观看| 久久99精品久久久久久噜噜| 国产精品老女人精品视频| 992tv成人免费视频| 国语自产精品视频在线看一大j8| 亚洲电影免费观看高清完整版在线| 亚洲二区在线播放视频| 亚洲电影免费观看高清| www国产亚洲精品久久网站| 中文字幕亚洲一区在线观看| 91成人在线播放| 成人午夜在线观看| 高清日韩电视剧大全免费播放在线观看| 黑人精品xxx一区一二区| 久久久免费精品| 国产日韩精品在线播放| 91精品视频免费看| 欧美成人激情视频| 国产精品久久久久aaaa九色| 欧美黑人巨大xxx极品| 欧美日韩综合视频网址| 在线电影av不卡网址| 大荫蒂欧美视频另类xxxx| 久热在线中文字幕色999舞| 日韩中文字在线| 日韩精品丝袜在线| 亲爱的老师9免费观看全集电视剧| 久久精品国产成人| 亚洲第一区第二区| 欧美另类高清videos| 成人免费自拍视频| 日韩电影中文字幕av| 欧美高清无遮挡| 美女久久久久久久| 中文字幕亚洲欧美一区二区三区| 亚洲免费福利视频| 亚洲高清免费观看高清完整版| 91在线免费网站| 久久久久久久久综合| 欧美成人黄色小视频| 亚洲最大福利视频网站| 国产一区二区欧美日韩| 精品国产一区二区三区久久久| 中文字幕欧美亚洲| 亚洲天堂av女优| 亚洲欧美精品中文字幕在线| 亚洲欧美激情精品一区二区| 国产美女直播视频一区| 91精品国产高清久久久久久久久| 亚洲成人黄色在线| 欧美激情国产日韩精品一区18| 国产午夜精品视频免费不卡69堂| 亚洲成人激情小说| 人人澡人人澡人人看欧美| 国产精品精品视频一区二区三区| 91黑丝在线观看| 欧美日韩视频免费播放| 亚洲精品91美女久久久久久久| 精品国内自产拍在线观看| 国产亚洲激情在线| 亚洲一区二区三区四区在线播放| 亚洲一级一级97网| 国产精品视频1区| 亚洲国产精彩中文乱码av| 亚洲欧美第一页| 精品亚洲一区二区| 亚洲人成欧美中文字幕| 精品国产一区二区三区四区在线观看| 欧美性xxxx极品hd满灌| 久久国产精品影片| 久久伊人91精品综合网站| 国产日韩在线一区| 中文字幕欧美日韩va免费视频| 欧美日韩中文字幕| 午夜伦理精品一区| 欧美乱大交xxxxx另类电影| 亚洲国产精品人人爽夜夜爽| 日韩免费观看在线观看| 亚洲第一中文字幕| 亚洲最大福利视频网| 日韩综合中文字幕| 欧美视频不卡中文| 日韩欧美在线视频| 国产一区二区三区视频免费| 国产一区二区三区久久精品| 国产日韩亚洲欧美| 热re99久久精品国产66热| 国产日韩精品一区二区| 欧美激情第一页xxx| 国外成人在线播放| 国产在线观看精品一区二区三区| 欧洲精品久久久| 亚洲高清av在线| 欧美激情精品久久久久| 亚洲高清一区二| 久久国产加勒比精品无码| 国产激情综合五月久久| 成人h猎奇视频网站| 欧美午夜女人视频在线| 在线免费看av不卡| 精品久久久久久久久久久久久久| 久久久久久欧美| 91精品国产自产在线老师啪| 中文字幕国产亚洲2019| 欧美性高跟鞋xxxxhd| 在线日韩日本国产亚洲| 国产aaa精品| 欧美男插女视频| 亚洲bt欧美bt日本bt| 国产精品免费一区| 久久成年人免费电影| 国产成人精彩在线视频九色| 国产精品中文字幕在线观看| 国产999精品视频| 成人亚洲欧美一区二区三区| 亚洲自拍偷拍第一页| 久久综合网hezyo| 欧美激情亚洲国产| 国产日韩一区在线| 992tv成人免费影院| 欧美激情中文网| 亚洲新声在线观看| 日韩成人在线电影网| 91国产视频在线播放| 成人精品在线视频| 国产在线拍偷自揄拍精品| 国产精品久久久久久久app| 久久久久久久97| 成人久久精品视频| 亚洲欧美在线免费| 亚洲精品久久久久久久久久久久久| 成人自拍性视频| 最近2019中文字幕第三页视频| 色噜噜国产精品视频一区二区| 成人国产精品色哟哟| 亚洲第一中文字幕| 精品无人国产偷自产在线| 国产精品劲爆视频| 欧美中文字幕在线视频| 成人春色激情网| 在线观看国产欧美| 一区二区三区视频在线| 欧美极品少妇xxxxx|