淺談PHP7中的一些小技巧
相同的命名空間,相同的 use
在 PHP 7 之前,開發(fā)者經(jīng)常這么做:
use Universe\Saiyan; use Universe\SuperSaiyan;
從 PHP 7 開始:
use Universe\{Saiyan, SuperSaiyan};
函數(shù)和常量也是一樣的。如果它們屬于同一命名空間,則可以對(duì)它們進(jìn)行分組。
常量可以是數(shù)組
define('NAMES', [
'first' => 'John',
'middle' => 'Fitzgerald',
'last' => 'Kennedy'
]);
echo NAMES['last']; //顯示 "Kennedy"
太空船操作符
它的寫法是這樣的<=>。它結(jié)合了比較。它表示 “小于,等于或大于”。當(dāng)使用用戶定義的比價(jià)函數(shù)對(duì)數(shù)組進(jìn)行排序時(shí),它非常有用,因?yàn)榉祷刂凳牵?/p>
- 0 如果值相等
- 1 如果左邊的值更大
- -1 如果右邊的值更大
那么,讓我們對(duì)以下女演員進(jìn)行排序:
$actressesWithAcademyAwards = [
[ 'name' => 'Katharine Hepburn', 'awards' => 4 ],
[ 'name' => 'Jessica Lange', 'awards' => 2 ],
[ 'name' => 'Meryl Streep', 'awards' => 3 ],
[ 'name' => 'Cate Blanchett', 'awards' => 2 ],
];
你可以用一行來代替多行來進(jìn)行比較:
usort($actressesWithAcademyAwards, function ($a, $b) {
return $a['awards'] <=> $b['awards'];
});
print_r($actressesWithAcademyAwards);
返回:
Array
(
[0] => Array
(
[name] => Jessica Lange
[awards] => 2
)
[1] => Array
(
[name] => Cate Blanchett
[awards] => 2
)
[2] => Array
(
[name] => Meryl Streep
[awards] => 3
)
[3] => Array
(
[name] => Katharine Hepburn
[awards] => 4
)
)
這是一個(gè)非常常見的 PHP 用例,因此太空船操作符可以節(jié)省時(shí)間。另外,它的可讀性更強(qiáng)。
數(shù)組的第一 / 最后一個(gè)鍵 (PHP 7.3)
從 PHP 7.3 開始,你可以很容易地得到數(shù)組的第一個(gè)鍵和最后一個(gè)鍵:
$array = [ 'v' => 1, 'i' => 2, 'p' => 3 ]; $firstKey = array_key_first($array); $lastKey = array_key_last($array); print_r($firstKey); // v print_r($lastKey); // p
真的很簡(jiǎn)單,因?yàn)樗挥绊憙?nèi)部數(shù)組指針。
數(shù)組延展操作符 (PHP 7.4)
該特性可以實(shí)現(xiàn)以下功能:
$abc = range('a', 'c');
$def = range('d', 'f');
$ghi = range('g', 'i');
$all = [...$abc, ...$def, ...$ghi, 'j'];
print_r($all);
得到:
Array
(
[0] => a
[1] => b
[2] => c
[3] => d
[4] => e
[5] => f
[6] => g
[7] => h
[8] => i
[9] => j
)
在大多數(shù)情況下,它基本取代了array_merge().
在大多數(shù)情況下,它基本取代了array_merge().
箭頭函數(shù) (PHP 7.4)
請(qǐng)注意,因?yàn)楝F(xiàn)在它指的是只有一個(gè)表達(dá)式的短閉包(因此有了 “短” 這個(gè)字):
$c = 3; $addC = fn($x) => $x + $c; echo $addC(70); // 73
不需要use關(guān)鍵字。
常量的可見性 (PHP7.1)
class Mother {
private const ERROR_LEVEL_1 = 'achtung';
}
可見性有助于確保不應(yīng)該被覆蓋的內(nèi)容不會(huì)被覆蓋。在 PHP 7.1 之前,對(duì)于類常量(始終是公共的)來說是不可能的。
Constant visibility (PHP7.1)
class Mother {
private const ERROR_LEVEL_1 = 'achtung';
}
可見性有助于確保不應(yīng)被覆蓋的內(nèi)容不被覆蓋。在PHP 7.1之前,對(duì)于類常量(始終是公共的)這是不可能的。
結(jié)語
PHP 7 是強(qiáng)大的。它速度更快,功能更強(qiáng)大。你知道 PHP 7 可以完成這些事嗎?
以上就是淺談PHP7中的一些小技巧的詳細(xì)內(nèi)容,更多關(guān)于PHP7中的一些小技巧的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Laravel網(wǎng)站打開速度優(yōu)化的方法匯總
最近在學(xué)習(xí) Laravel 框架,自己做了個(gè)小站,總結(jié)了一些 Laravel 網(wǎng)站性能提升的方法。所以下面這篇文章主要給大家匯總介紹了關(guān)于Laravel網(wǎng)站打開速度優(yōu)化的一些方法,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。2017-07-07
PHP代碼優(yōu)化的53個(gè)細(xì)節(jié)
這篇文章主要介紹了PHP代碼優(yōu)化的53個(gè)細(xì)節(jié),常見而重要的php優(yōu)化策略,需要的朋友可以參考下2014-03-03
PHP set_time_limit(0)長(zhǎng)連接的實(shí)現(xiàn)分析
每次我們?cè)L問PHP腳本的時(shí)候,都是當(dāng)所有的PHP腳本執(zhí)行完成后,我們才得到返回結(jié)果。如果我們需要一個(gè)腳本持續(xù)的運(yùn)行,那么我們就要通過php長(zhǎng)連接的方式,來達(dá)到運(yùn)行目的。2010-03-03
Session保存到數(shù)據(jù)庫(kù)的php類分享
Session保存到數(shù)據(jù)庫(kù)的php類,需要的朋友可以參考下。2011-10-10
PHPMailer的主要功能特點(diǎn)和簡(jiǎn)單使用說明
本篇文章主要是對(duì)PHPMailer的主要功能特點(diǎn)和簡(jiǎn)單使用說明進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-02-02

