- 相關(guān)推薦
10個(gè)你應該學(xué)習使用的PHP特性
本文主要總結了10個(gè)關(guān)于PHP的特性,這些PHP特性對于PHP開(kāi)發(fā)者來(lái)說(shuō)都是應該學(xué)習和使用的,譯文如下:

1)標量類(lèi)型聲明(PHP7)
PHP是一種松散類(lèi)型的編程語(yǔ)言,因此沒(méi)有提供任何指定輸入參數類(lèi)型和返回值類(lèi)型的方法。 PHP7通過(guò)以下語(yǔ)法改變了這個(gè)現象:
|
function add(int $x, int $y) : int { return $x + $y; } echo add(1, 2); |
有效類(lèi)型為:類(lèi)/接口名稱(chēng),self,array(數組),callable(回調類(lèi)型),bool(布爾型),float(浮點(diǎn)型),int(整型)和string(字符串)。
2)?? — 空接合操作符(PHP7)
空接合操作符雖然小,但非常好用,是PHP7中新增加的。?? — 只要操作符的左邊存在且不為空,就返回左邊,否則就返回操作符的右邊:
|
//$a is not defined $b = NULL; $c = "abc123"; echo($a ?? $b ?? $c); //Result: abc123 |
3)匿名類(lèi)(PHP7)
PHP7中還有一個(gè)新增的也很不錯,那就是匿名類(lèi)。有時(shí)候,我們只是沒(méi)有必要創(chuàng )建一個(gè)命名的類(lèi),因為它的名字會(huì )導致當前命名空間的膨脹。語(yǔ)法非常簡(jiǎn)單:
|
echo (new class() { public function myMethod() { return "Hello!"; } })->myMethod(); //Result: Hello! |
4)Reflection
Reflection是一個(gè)用來(lái)獲取有關(guān)運行時(shí)代碼信息的強大框架。讓你可以對類(lèi)、接口、函數、方法和擴展執行反向工程,以構建映射引擎,IoC容器或文檔框架等等。
下面是一個(gè)獲取匿名類(lèi)所有方法的簡(jiǎn)單例子:
|
$class = new ReflectionClass(new class() { public function getText() { return "Hello from anonymous class"; } }); $methods = $class->getMethods(); var_dump($methods); |
5)短數組初始化
在用PHP編程的時(shí)候,我傾向于大量使用數組,因為它們不僅功能強大,而且簡(jiǎn)單易用。PHP的5.4.x版本使得更容易初始化:
$myArray = ["foo", "name" => "bar"];
6)DateTime類(lèi)
PHP的5.2版本附帶DateTime類(lèi)作為首選的操縱和格式化日期和時(shí)間的方式。
7)Lambda表達式/匿名函數
匿名函數(有時(shí)也被稱(chēng)為lambda表達式)是沒(méi)有指定名稱(chēng)的函數。匿名函數可以被分配給一個(gè)變量,如下例所示:
|
$sayHi = function($toName) { echo("Hi " . $toName); }; $sayHi("Peter"); |
8)array_map
array_map是一個(gè)不錯的函數,能幫助你對數組中的每個(gè)元素執行計算。這在混合了匿名函數/ lambda表達式的時(shí)候特別好用。無(wú)論你為數組中的元素提供什么方法,array_map函數都適用:
|
$nameLengths = array_map(function($item) { return strlen($item); }, ["Sue", "Peter", "Michael"]); //Result: 3, 5, 7 |
需要注意的是,array_map可能會(huì )比f(wàn)oreach慢一點(diǎn)兒(特別當混合使用lambda表達式的時(shí)候更為明顯),所以要慎用于那些非常大的數組。
9)json_encode()和json_decode()
我最近傾向于大量使用JSON序列化和反序列化。PHP的json_encode和json_decode函數對此提供了大力支持。需要注意的是,json_encode會(huì )忽略私有成員:
|
class car { public $make = "Tesla"; public $model ="Model S"; private $errorCodes = ['34343', '545344']; } $carAsJson = json_encode(new car()); //Result: {"make":"Tesla","model":"Model S"} |
10)密碼的哈希(hashing)和驗證
PHP通過(guò)password_hash和password_verify函數,用一種安全的方式來(lái)大力支持密碼的哈希和驗證。因為使用非常簡(jiǎn)單,所以我們就沒(méi)有必要重新發(fā)明輪子了。想查看案例的話(huà),請點(diǎn)擊下面的文章:
作為PHP程序員,以上這10個(gè)PHP特性你一定要熟悉,感謝您的閱讀。
【10個(gè)你應該學(xué)習使用的PHP特性】相關(guān)文章:
PHP語(yǔ)言的使用特性04-23
PHP應該如何系統學(xué)習04-22
PHP語(yǔ)言有哪些特性02-20
PHP語(yǔ)言的特性有哪些06-04