91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP7.x中每一個版本的新特性是什么

發布時間:2021-06-07 09:56:45 來源:億速云 閱讀:92 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“PHP7.x中每一個版本的新特性是什么”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“PHP7.x中每一個版本的新特性是什么”這篇文章吧。

PHP 7.0

標量類型聲明

什么是標量類型?

四種標量類型:

boolean (布爾型)

integer (整型)

float (浮點型, 也稱作 double)

string (字符串)

兩種復合類型:

array (數組)

object (對象)

資源是一種特殊變量,保存了到外部資源的一個引用。資源是通過專門的函數來建立和使用的。資源類型變量為打開文件、數據庫連接、圖形畫布區域等的特殊句柄。

說的通俗一點,標量類型,就是定義變量的一個數據類型。

在php5中,有類名,接口,數組 和回調函數。在php中,增加了 符串(string), 整數 (int), 浮點數 (float), 以及布爾值 (bool)。下面我們來舉例子,萬事萬物看例子

function typeInt(int $a)
{
    echo $a;
}

typeInt('sad');
// 運行,他講會報錯 Fatal error: Uncaught TypeError: Argument 1 passed to type() must be of the type integer, string given

在這里,我們定義了$a 必須為int類型,如果 type 函數里面傳了string 所以報錯。讓我們修改上述的代碼就沒錯了

function typeString(string $a)
{
    echo $a;
}

typeString('sad'); 
//sad

返回值類型聲明

關于函數的方法返回值可以定義,比如我某個函數必須要返回 int 類型,他就定死來返回 int ,如果你返回 string 則報錯。如下

<?php

function returnArray(): array
{

    return [1, 2, 3, 4];
}

print_r(returnArray());
/*Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
*/

那當我們的定義了數組,返回了string或者其他類型呢?

那么他將會報錯 比如

function returnErrorArray(): array
{

    return '1456546';
}

print_r(returnErrorArray());
/*
Array
Fatal error: Uncaught TypeError: Return value of returnArray() must be of the type array, string returned in 
*/

null 合并運算符

由于日常使用中存在大量同時使用三元表達式和 isset()的情況, 我們添加了null合并運算符 (??) 這個語法糖。如果變量存在且值不為NULL, 它就會返回自身的值,否則返回它的第二個操作數。

<?php

$username = $_GET['user'] ?? 'nobody';
//這兩個是等效的  當不存在user 則返回?? 后面的參數

$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

?>

太空船操作符

// 整數
echo 1 <=> 1; // 0 當左邊等于右邊的時候,返回0
echo 1 <=> 2; // -1  當左邊小于右邊,返回-1
echo 2 <=> 1; // 1  當左邊大于右邊,返回1

// 浮點數
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
 
// 字符串
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1

define 定義數組

在PHP7 以前的版本 define 是不能夠定義數組的 現在是可以的 比如

define('ANIMALS', [
    'dog',
    'cat',
    'bird'
]);

echo ANIMALS[1]; // 輸出 "cat"

use 方法批量導入

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

###Unicode codepoint 轉譯語法

echo "\u{aa}"; //a
echo "\u{0000aa}";  //a  
echo "\u{9999}"; //香

匿名類

<?php
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;
    }
});

PHP 7.1

可為空類型

參數以及返回值的類型現在可以通過在類型前加上一個問號使之允許為空。 當啟用這個特性時,傳入的參數或者函數返回的結果要么是給定的類型,要么是 null 。

<?php

function testReturn(): ?string
{
    return 'elePHPant';
}

var_dump(testReturn()); //string(10) "elePHPant"

function testReturn(): ?string
{
    return null;
}

var_dump(testReturn()); //NULL

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

test('elePHPant'); //string(10) "elePHPant"
test(null); //NULL
test(); //Uncaught Error: Too few arguments to function test(), 0 passed in...

void

增加了一個返回void的類型,比如

<?php
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);

多異常捕獲處理

這個功能還是比較常用的,在日常開發之中

<?php
try {
    // some code
} catch (FirstException | SecondException $e) {  //用 | 來捕獲FirstException異常,或者SecondException 異常
  
}

PHP 7.2

PHP7.2是PHP7系列 最少的新特性了

###允許分組命名空間的尾部逗號

比如

<?php

use Foo\Bar\{
    Foo,
    Bar,
    Baz,
};

允許重寫抽象方法

<?php

abstract class A
{
    abstract function test(string $s);
}
abstract class B extends A
{
    // overridden - still maintaining contravariance for parameters and covariance for return
    abstract function test($s) : int;
}

新的對象類型

<?php

function test(object $obj) : object  //這里 可以輸入對象
{
    return new SplQueue();
}

test(new StdClass());

PHP 7.3

PHP7.3 在語法層面沒有什么很大的改變。

PHP 7.4

類屬性支持類型聲明

恭喜 PHP 往強類型又邁了一步

<?php
class User {
    public int $id;
    public string $name;
}
?>

箭頭函數

箭頭函數提供了用于使用隱式按值作用域綁定定義函數的簡寫語法。與 JS 的箭頭函數差不多,不過要帶個 fn。吐槽一波

<?php
$factor = 10;
$nums = array_map(fn($n) => $n * $factor, [1, 2, 3, 4]);
// $nums = array(10, 20, 30, 40);
?>

Null 合并運算符支持方法

<?php
$array['key'] ??= computeDefault();
// 類似與這個
if (!isset($array['key'])) {
    $array['key'] = computeDefault();
}
?>

以上是“PHP7.x中每一個版本的新特性是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

涞水县| 天长市| 梓潼县| 杨浦区| 巴青县| 师宗县| 和平县| 淮南市| 清流县| 阿克陶县| 思茅市| 周口市| 柳河县| 前郭尔| 澄城县| 交城县| 雷州市| 玛沁县| 乌拉特中旗| 安图县| 南昌市| 汝阳县| 施甸县| 雷山县| 南投县| 宜兴市| 如皋市| 全南县| 天台县| 望江县| 武乡县| 古交市| 奎屯市| 南京市| 治多县| 肥城市| 绍兴市| 东乌| 合水县| 咸阳市| 龙山县|