国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Use PHP7

yearsj / 911人閱讀

摘要:說明目前中,計(jì)劃于月日發(fā)布。安全改進(jìn)密碼哈希中的是一個(gè)強(qiáng)大的哈希算法,被選為年密碼哈希大賽的冠軍,將它作為算法的安全替代品。已將設(shè)置為非零值已被標(biāo)記為已棄用。被認(rèn)為是平臺(tái)相關(guān)的,將被棄用。

說明

目前RC3中,PHP 7.2計(jì)劃于11月30日發(fā)布。新版本將提供新的特性,功能和改進(jìn),使我們能夠編寫更好的代碼。在這篇文章中,我將介紹一些PHP 7.2中最有趣的語言特性。

參數(shù)類型聲明

從PHP 5開始,我們可以在函數(shù)的聲明中指定期望傳遞的參數(shù)類型。如果給定的值是不正確的類型,那么PHP會(huì)拋出一個(gè)錯(cuò)誤。參數(shù)類型聲明(也稱為類型提示)指定預(yù)期要傳遞給函數(shù)或類方法的變量的類型。

例如下面這個(gè)例子:

class MyClass {
    public $var = "Hello World";
}

$myclass = new MyClass;

function test(MyClass $myclass){
    return $myclass->var;
}

echo test($myclass);

在這個(gè)代碼中,測試函數(shù)需要MyClass的一個(gè)實(shí)例。不正確的數(shù)據(jù)類型將導(dǎo)致以下致命錯(cuò)誤:

Fatal error: Uncaught TypeError: Argument 1 passed to test() must be an instance of MyClass, string given, called in /app/index.php on line 12 and defined in /app/index.php:8

由于PHP 7.2 類型提示可以與對(duì)象數(shù)據(jù)類型一起使用,并且這種改進(jìn)允許聲明通用對(duì)象作為函數(shù)或方法的參數(shù)。這里是一個(gè)例子:

class MyClass {
    public $var = "";
}

class FirstChild extends MyClass {
    public $var = "My name is Jim";
}
class SecondChild extends MyClass {
    public $var = "My name is John";
}

$firstchild = new FirstChild;
$secondchild = new SecondChild;

function test(object $arg) {
    return $arg->var;
}

echo test($firstchild);

echo test($secondchild);

在這個(gè)例子中,我們調(diào)用了兩次測試函數(shù),每次調(diào)用都傳遞一個(gè)不同的對(duì)象。在以前的PHP版本中這是不可能的。

Docker命令
在Docker中使用PHP 7.0和PHP 7.2測試類型提示

對(duì)象返回類型聲明

如果參數(shù)類型聲明指定函數(shù)參數(shù)的預(yù)期類型,則返回類型聲明指定返回值的預(yù)期類型。

返回類型聲明指定了一個(gè)函數(shù)應(yīng)該返回的變量的類型。
從PHP 7.2開始,我們被允許為對(duì)象數(shù)據(jù)類型使用返回類型聲明。這里是一個(gè)例子:

class MyClass {
    public $var = "Hello World";
}

$myclass = new MyClass;

function test(MyClass $arg) : object {
    return $arg;
}

echo test($myclass)->var;

以前的PHP版本會(huì)導(dǎo)致以下致命錯(cuò)誤:

Fatal error: Uncaught TypeError: Return value of test() must be an instance of object, instance of MyClass returned in /app/index.php:10

當(dāng)然,在PHP 7.2中,這個(gè)代碼回應(yīng)了“Hello World”。

參數(shù)類型加寬

PHP目前不允許子類和它們的父類或接口之間的參數(shù)類型有任何差異。這意味著什么?
考慮下面的代碼:


這里我們省略了子類中的參數(shù)類型。在PHP 7.0中,這段代碼會(huì)產(chǎn)生以下警告:

Warning: Declaration of MyChildClass::myFunction($myarray) should be compatible with MyClass::myFunction(array $myarray) in %s on line 8

自PHP 7.2以來,我們被允許在不破壞任何代碼的情況下省略子類中的類型。這個(gè)建議將允許我們升級(jí)類來在庫中使用類型提示,而不需要更新所有的子類。

在列表語法中尾隨逗號(hào)

數(shù)組中最后一項(xiàng)之后的尾隨逗號(hào)是PHP中的有效語法,有時(shí)為了方便追加新項(xiàng)目并避免由于缺少逗號(hào)而導(dǎo)致解析錯(cuò)誤,鼓勵(lì)使用該語法。自PHP 7.2以來,我們被允許在分組命名空間中使用尾隨逗號(hào)。

請參閱列表語法中的尾隨逗號(hào)以便在此RFC處獲得更近的視圖以及一些代碼示例。

安全改進(jìn) 密碼哈希中的Argon2

Argon2是一個(gè)強(qiáng)大的哈希算法,被選為2015年密碼哈希大賽的冠軍,PHP 7.2將它作為Bcrypt算法的安全替代品。
新的PHP版本引入了PASSWORD_ARGON2I常量,現(xiàn)在可以在password_*函數(shù)中使用它:

password_hash("password", PASSWORD_ARGON2I);

與僅使用一個(gè)成本因素的Bcrypt不同,Argon2需要三個(gè)成本因素區(qū)分如下:

甲存儲(chǔ)器成本它定義了應(yīng)散列期間被消耗KIB的數(shù)(默認(rèn)值是1 << 10,或1024 KIB,或1 MIB)

甲時(shí)間成本定義散列算法的迭代次數(shù)(默認(rèn)為2)

一個(gè)并行因子,用于設(shè)置散列期間將使用的并行線程數(shù)(缺省值為2)

三個(gè)新的常量定義了默認(rèn)的成本因素:

PASSWORD_ARGON2_DEFAULT_MEMORY_COST

PASSWORD_ARGON2_DEFAULT_TIME_COST

PASSWORD_ARGON2_DEFAULT_THREADS

這里是一個(gè)例子:

$options = ["memory_cost" => 1<<11, "time_cost" => 4, "threads" => 2];
password_hash("password", PASSWORD_ARGON2I, $options);

有關(guān)更多信息,請參閱Argon2密碼哈希。

Libsodium作為PHP Core的一部分

從版本7.2開始,PHP將鈉庫納入核心。Libsodium 是一個(gè)跨平臺(tái)和跨語言的庫,用于加密,解密,簽名,密碼散列等等。以前通過 PECL 提供。有關(guān)Libsodium功能的文檔列表,請參閱庫快速入門指南。另請參閱PHP 7.2:將現(xiàn)代加密技術(shù)添加到其標(biāo)準(zhǔn)庫中的第一種編程語言。

棄用

以下是PHP 8.0 不推薦使用的函數(shù)和功能列表,不晚于PHP 8.0:

該__autoload功能已被取代由spl_autoload_register在PHP 5.1。現(xiàn)在,在編譯期間遇到棄用通知。

在$ php_errormsg中時(shí),拋出一個(gè)非致命錯(cuò)誤變量是在局部范圍內(nèi)創(chuàng)建。由于應(yīng)該使用PHP 7.2 error_get_last和error_clear_last。

create_function()允許創(chuàng)建一個(gè)帶有生成函數(shù)名稱的函數(shù),一系列參數(shù)和正文代碼作為參數(shù)提供。由于安全問題和性能不佳,已將其標(biāo)記為已棄用,并鼓勵(lì)使用附件。

已將 mbstring.func_overload ini設(shè)置為非零值已被標(biāo)記為已棄用。

(unset)cast 是一個(gè)總是返回null的表達(dá)式,被認(rèn)為是無用的。

如果提供了第二個(gè)參數(shù),parse_str()會(huì)將查詢字符串解析為數(shù)組,如果不使用,則解析為本地符號(hào)表。由于出于安全原因不鼓勵(lì)在函數(shù)范圍內(nèi)設(shè)置變量,使用不帶第二個(gè)參數(shù)的 parse_str() 將拋出棄用通知。

gmp_random() 被認(rèn)為是平臺(tái)相關(guān)的,將被棄用。使用 gmp_random_bits() 和 gmp_random_rage()來代替。

each() 被用來像 foreach() 那樣迭代一個(gè)數(shù)組,但是 foreach() 有幾個(gè)原因是可取的,包括快10倍。現(xiàn)在,在循環(huán)的第一個(gè)呼叫中將會(huì)拋棄。

所述斷言函數(shù)檢查給定的斷言,并采取適當(dāng)?shù)男袆?dòng),如果結(jié)果是FALSE。帶有字符串參數(shù)的 assert() 的使用現(xiàn)在已被棄用,因?yàn)樗鼤?huì)打開一個(gè) RCE 漏洞。該 zend.assertion INI 選項(xiàng)可用于防止斷言表達(dá)式的評(píng)價(jià)。

$ errcontext是包含生成錯(cuò)誤時(shí)存在的局部變量的數(shù)組。它作為使用 set_error_handler() 函數(shù)設(shè)置的錯(cuò)誤處理程序的最后一個(gè)參數(shù)傳遞。

結(jié)尾說明

翻譯自 https://kinsta.com/blog/php-7-2/

Script Maker Day Day Up!

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/26202.html

相關(guān)文章

  • PHP7新特性介紹

    摘要:本文內(nèi)容根據(jù)發(fā)布時(shí)的而來,鏈接地址特性一覽新的操作符之前的寫法比較兩個(gè)數(shù)的大小新增的操作符可以直接使用這種方式輸出字符這個(gè)是方括號(hào)里面的問號(hào),因?yàn)槭亲址┛筒恢С郑l(fā)布出來新增的一個(gè)函數(shù),具體功能沒有深入研究變量類型聲明與之相關(guān)的一個(gè)語 本文內(nèi)容根據(jù)PHP發(fā)布時(shí)的 new files 而來,鏈接地址 : PHP 7 new 特性一覽 Added ?? operator Adde...

    icyfire 評(píng)論0 收藏0
  • PHP 7 修改了什么呢 -- 2

    摘要:風(fēng)格的構(gòu)造函數(shù)式構(gòu)造函數(shù),它與類的名稱相同,因?yàn)樗鼈兪窃谒x類的方法,現(xiàn)在已過時(shí),并且將在未來被移除。如果的構(gòu)造僅僅是一個(gè)類中定義構(gòu)造函數(shù),將發(fā)出。類實(shí)現(xiàn)構(gòu)造函數(shù)方法不受影響。 PHP7 - use語句 從PHP7起,單次使用 use 語句可以用來從同一個(gè)命名空間導(dǎo)入類,函數(shù)和常量(而不用多次使用 use 語句)。示例 PHP7 - 錯(cuò)誤處理 從PHP7,錯(cuò)誤處理和報(bào)告已經(jīng)改變。P...

    leeon 評(píng)論0 收藏0
  • [安裝] mac安裝PHP7經(jīng)歷

    摘要:背景前幾天在上跑,由于需要開啟多個(gè)進(jìn)程,多進(jìn)程需要擴(kuò)展的支持,我之前那個(gè)安裝的沒有這個(gè)擴(kuò)展,就直接卸載了,然后想下載源碼編譯安裝的更高版本,也可以更自由的安裝擴(kuò)展。 背景 前幾天在mac上跑workrman,由于workerman需要開啟多個(gè)進(jìn)程,多進(jìn)程需要pcntl擴(kuò)展的支持,我之前那個(gè)brew安裝的php71沒有這個(gè)擴(kuò)展,就直接卸載了php71,然后想下載源碼編譯安裝php7的更高...

    xiongzenghui 評(píng)論0 收藏0
  • isset在php5.6-和php7.0+的一些差異

    摘要:今天在公司實(shí)現(xiàn)一個(gè)模塊功能時(shí)寫了如下代碼居然報(bào)錯(cuò)在編譯階段就通不過了錯(cuò)誤信息意思很明顯但我的代碼里面并不是一個(gè)表達(dá)式啊,這讓我百思不得其解我?guī)е苫笤诩依镏匦虑孟铝巳缟洗a,編譯通過正常運(yùn)行查看版本而公司的開發(fā)機(jī)上運(yùn)行的是那么,為什么 今天在公司實(shí)現(xiàn)一個(gè)模塊功能時(shí)寫了如下代碼: class ProductCategory { const TYPES = [ 1 ...

    oysun 評(píng)論0 收藏0
  • PHP5.5 ~ PHP7.2 新特性整理

    摘要:以上例程會(huì)輸出返回值類型聲明增加了對(duì)返回類型聲明的支持。整數(shù)除法函數(shù)從移植到可為空類型參數(shù)以及返回值的類型現(xiàn)在可以通過在類型前加上一個(gè)問號(hào)使之允許為空。對(duì)于函數(shù)來說,不是一個(gè)合法的返回值。對(duì)于返回值,子類可以拓寬父類的或?qū)ο蠓祷刂殿愋偷健? PHP5.5 ~ PHP7.2 新特性整理 官方文檔:http://php.net/manual/zh/appe... 一、從PHP 5.5.x ...

    mrcode 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<