真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

php7的新特性有哪些-創(chuàng)新互聯(lián)

php7的新特性有哪些?針對這個問題,這篇文章給出了相對應的分析和解答,希望能幫助更多想解決這個問題的朋友找到更加簡單易行的辦法。

創(chuàng)新互聯(lián)專注于企業(yè)網(wǎng)絡營銷推廣、網(wǎng)站重做改版、羅莊網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5高端網(wǎng)站建設、商城系統(tǒng)網(wǎng)站開發(fā)、集團公司官網(wǎng)建設、外貿營銷網(wǎng)站建設、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為羅莊等各大城市提供網(wǎng)站開發(fā)制作服務。PHP 標量類型與返回值類型聲明
  • 標量類型聲明

    強制模式

declare(strict_types=1)
  

以上程序執(zhí)行輸出結果為:

9復制代碼
  • 嚴格模式


以上程序由于采用了嚴格模式,所以如果參數(shù)中出現(xiàn)不適整數(shù)的類型會報錯,執(zhí)行輸出結果為:

PHP Fatal error:  Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, called in……復制代碼
PHP NULL 合并運算符
  • 以前的三元運算

      $site = isset($_GET['site']) ? $_GET['site'] : '菜鳥教程';復制代碼
  • 現(xiàn)在的合并運算符

      $site = $_GET['site'] ?? '菜鳥教程';復制代碼
  • 以上2種方法是一樣的

  • 以下是實例:

    復制代碼
組合比較符,又稱太空船運算符

PHP 7 新增加的太空船運算符(組合比較符)用于比較兩個表達式 $a 和 $b,如果 $a 小于、等于或大于 $b時,它分別返回-1、0或1。

以下是實例

 1);print(PHP_EOL);print( 1 <=> 2);print(PHP_EOL);print( 2 <=> 1);print(PHP_EOL);print(PHP_EOL); // PHP_EOL 為換行符

// 浮點型比較print( 1.5 <=> 1.5);print(PHP_EOL);print( 1.5 <=> 2.5);print(PHP_EOL);print( 2.5 <=> 1.5);print(PHP_EOL);print(PHP_EOL);

// 字符串比較print( "a" <=> "a");print(PHP_EOL);print( "a" <=> "b");print(PHP_EOL);print( "b" <=> "a");print(PHP_EOL);
?>復制代碼
    以上結果分別為復制代碼
0
-1
1

0
-1
1

0
-1
1復制代碼
PHP 常量數(shù)組
  • 以前定義常量數(shù)組 只能有 const;
  • 現(xiàn)在定義常量數(shù)組可以使用 define();

以下是實例:

// 使用 define 函數(shù)來定義數(shù)組
define('sites', [   'Google',   'Runoob',   'Taobao']);print(sites[1]);
?>
以上程序執(zhí)行輸出結果為:

Runoob復制代碼
PHP 匿名類
  • PHP 7 支持通過 new class 來實例化一個匿名類,這可以用來替代一些"用后即焚"的完整類定義。
  • 以下是實例:
        logger; 
           } 
        
           public function setLogger(Logger $logger) { 
              $this->logger = $logger; 
           }   
        } 
        
        $app = new Application; 
        // 使用 new class 創(chuàng)建匿名類 
        $app->setLogger(new class implements Logger { 
           public function log(string $msg) { 
              print($msg); 
           } 
        }); 

        $app->getLogger()->log("我的第一條日志"); 
        ?>
以上程序執(zhí)行輸出結果為:

我的第一條日志復制代碼
php Closure::call()
  • PHP 7 的 Closure::call() 有著更好的性能,將一個閉包函數(shù)動態(tài)綁定到一個新的對象實例并調用執(zhí)行該函數(shù)。
實例
x; 
}; 

// 閉包函數(shù)綁定到類 A 上 
$getX = $getXCB->bindTo(new A, 'A');  

echo $getX(); 
print(PHP_EOL); 

// PHP 7+ 代碼 
$getX = function() { 
    return $this->x; 
}; 
echo $getX->call(new A); 
?>
以上程序執(zhí)行輸出結果為:
1
1復制代碼
PHP 過濾 unserialize()
  • PHP 7 增加了可以為 unserialize() 提供過濾的特性,可以防止非法數(shù)據(jù)進行代碼注入,提供了更安全的反序列化數(shù)據(jù)。
實例
obj1prop = 1; 
$obj2 = new MyClass2(); 
$obj2->obj2prop = 2; 

$serializedObj1 = serialize($obj1); 
$serializedObj2 = serialize($obj2); 

// 默認行為是接收所有類 
// 第二個參數(shù)可以忽略 
// 如果 allowed_classes 設置為 false, unserialize 會將所有對象轉換為 __PHP_Incomplete_Class 對象 
$data = unserialize($serializedObj1 , ["allowed_classes" => true]); 

// 轉換所有對象到 __PHP_Incomplete_Class 對象,除了 MyClass1 和 MyClass2 
$data2 = unserialize($serializedObj2 , ["allowed_classes" => ["MyClass1", "MyClass2"]]); 

print($data->obj1prop); 
print(PHP_EOL); 
print($data2->obj2prop); 
?>
以上程序執(zhí)行輸出結果為:
1
2復制代碼

注意 以上特性是unserialize()里面多了一個參數(shù)選擇  allowed_classes

PHP CSPRNG 偽隨機數(shù)生成器
  • CSPRNG(Cryptographically Secure Pseudo-Random Number Generator,偽隨機數(shù)產生器)。

  • PHP 7 通過引入幾個 CSPRNG 函數(shù)提供一種簡單的機制來生成密碼學上強壯的隨機數(shù)。

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

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

  • 綜上  類似于原先的 rand() 和  'mt_rand()';  只不過 現(xiàn)在random_bytes()生成的是隨機字符串

php7 異常
  • PHP 7 異常用于向下兼容及增強舊的assert()函數(shù)。它能在生產環(huán)境中實現(xiàn)零成本的斷言,并且提供拋出自定義異常及錯誤的能力。
  • 老版本的API出于兼容目的將繼續(xù)被維護。
  • assert()現(xiàn)在是一個語言結構,它允許第一個參數(shù)是一個表達式,而不僅僅是一個待計算的 string或一個待測試的boolean。
assert()的應用  跟assert_option() 配合復制代碼

還有參數(shù)類型

配置項默認值可選值
zend.assertions11.生成和執(zhí)行代碼 (開發(fā)模式)
0.生成代碼,但在執(zhí)行時跳過它
-1.不生成代碼 (生產環(huán)境)
assert.exception01.斷言失敗時拋出,可以拋出異常對象,如果沒有提供異常,則拋出AssertionError 對象實例。
0 . 使用或生成 Throwable, 僅僅是基于對象生成的警告而不是拋出對象(與 PHP 5 兼容)
**參數(shù)**
assertion
斷言。在 PHP 5 中,是一個用于執(zhí)行的字符串或者用于測試的布爾值。在 PHP 7 中,可以是一個返回任何值的表達式, 它將被執(zhí)行結果用于指明斷言是否成功。
description
如果 assertion 失敗了,選項 description 將會包括在失敗信息里。
exception
在 PHP 7 中,第二個參數(shù)可以是一個 Throwable 對象,而不是一個字符串,如果斷言失敗且啟用了 assert.exception 該對象將被拋出

實例
將 zend.assertions 設置為 0:
實例

以上程序執(zhí)行輸出結果為:
Hi!
將 zend.assertions 設置為 1,assert.exception 設置為 1:
實例

以上程序執(zhí)行輸出結果為:
Fatal error: Uncaught AssertionError: assert(true == false) in -:2
Stack trace:#0 -(2): assert(false, 'assert(true == ...')#1 {main}
  thrown in - on line 2復制代碼
PHP 7 use 語句
  • PHP 7 可以使用一個 use 從同一個 namespace 中導入類、函數(shù)和常量:
// PHP 7 之前版本需要使用多次 use 
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 導入同一個 namespace 的類 
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}; 
?>復制代碼

關于php7的新特性就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


本文名稱:php7的新特性有哪些-創(chuàng)新互聯(lián)
當前地址:http://weahome.cn/article/ccchii.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部