PHP開發者應該學習、會用10個PHP7新特性

佚名發表於2019-04-02

本文主要總結了10個PHP7特性,這些PHP特性對於PHP開發者來說都是應該學習和使用的,一起來學習下:

23493707

1)標量型別宣告(PHP7)

PHP是一種鬆散型別的程式語言,因此沒有提供任何指定輸入引數型別和返回值型別的方法。 PHP7透過以下語法改變了這個現象:

function add(int $x, int $y) : int
{
    return $x + $y;
}
echo add(1, 2);

有效型別為:類/介面名稱,self,array(陣列),callable(回撥型別),bool(布林型),float(浮點型),int(整型)和string(字串)。

2) — 空接合運算子(PHP7)

空接合運算子雖然小,但非常好用,是PHP7中新增加的。 — 只要運算子的左邊存在且不為空,就返回左邊,否則就返回運算子的右邊:

//$a is not defined
$b = NULL;
$c = "abc123";
echo($a    $b    $c);
//Result: abc123

3)匿名類(PHP7)

PHP7中還有一個新增的也很不錯,那就是匿名類。有時候,我們只是沒有必要建立一個命名的類,因為它的名字會導致當前名稱空間的膨脹。語法非常簡單:

echo (new class() {
    public function myMethod() {
      return "Hello!";
    }
})->myMethod();

//Result: Hello!

4)Reflection

Reflection是一個用來獲取有關執行時程式碼資訊的強大框架。讓你可以對類、介面、函式、方法和擴充套件執行反向工程,以構建對映引擎,IoC容器或文件框架等等。

下面是一個獲取匿名類所有方法的簡單例子:

$class = new ReflectionClass(new class() {
    public function getText() {
        return "Hello from anonymous class";
    }
});
$methods = $class->getMethods();
var_dump($methods);

更多資訊請看這裡:http://php.net/manual/en/book.reflection.php

5)短陣列初始化

在用PHP程式設計的時候,我傾向於大量使用陣列,因為它們不僅功能強大,而且簡單易用。PHP的5.4.x版本使得更容易初始化:

$myArray = ["foo", "name" => "bar"];

6)DateTime類

PHP的5.2版本附帶DateTime類作為首選的操縱和格式化日期和時間的方式。

更多資訊請看這裡:http://php.net/manual/en/class.datetime.php

7)Lambda表示式/匿名函式

匿名函式(有時也被稱為lambda表示式)是沒有指定名稱的函式。匿名函式可以被分配給一個變數,如下例所示:

$sayHi = function($toName) {
    echo("Hi " . $toName);
};

$sayHi("Peter");

更多資訊請看這裡:http://php.net/manual/en/functions.anonymous.php

8)array_map

array_map是一個不錯的函式,能幫助你對陣列中的每個元素執行計算。這在混合了匿名函式/ lambda表示式的時候特別好用。無論你為陣列中的元素提供什麼方法,array_map函式都適用:

$nameLengths = array_map(function($item) {
    return strlen($item); }, ["Sue", "Peter", "Michael"]);

//Result: 3, 5, 7

需要注意的是,array_map可能會比foreach慢一點兒(特別當混合使用lambda表示式的時候更為明顯),所以要慎用於那些非常大的陣列。

更多資訊請看這裡:http://php.net/manual/en/function.array-map.php

9)json_encode()和json_decode()

我最近傾向於大量使用JSON序列化和反序列化。PHP的json_encode和json_decode函式對此提供了大力支援。需要注意的是,json_encode會忽略私有成員:

class car {
    public $make = "Tesla";
    public $model ="Model S";
    private $errorCodes = ['34343', '545344'];
}     
$carAsJson = json_encode(new car());

//Result: {"make":"Tesla","model":"Model S"}

更多資訊請看這裡:http://php.net/manual/en/function.json-encode.php

10)密碼的雜湊(hashing)和驗證

PHP透過password_hash和password_verify函式,用一種安全的方式來大力支援密碼的雜湊和驗證。因為使用非常簡單,所以我們就沒有必要重新發明輪子了。想檢視案例的話,請點選下面的文章:

http://www.codeaddiction.net/articles/4/hash-and-verify-passwords-in-php—the-right-way

作為PHP程式設計師,以上這10個PHP特性你一定要熟悉,感謝您的閱讀。

相關文章