成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP 7 修改了什么呢 --1

svtter / 780人閱讀

摘要:此版本被認(rèn)為是在年發(fā)布后最重要的變化。標(biāo)量類型聲明有兩種選擇強(qiáng)制強(qiáng)制性是默認(rèn)模式,不需要指定。嚴(yán)格嚴(yán)格模式有明確的暗示。

PHP7是什么鬼?

PHP7是PHP編程語(yǔ)言的一個(gè)主要版本,并號(hào)稱是開發(fā)Web應(yīng)用程序的一次革命,可開發(fā)和交付移動(dòng)企業(yè)和云應(yīng)用。此版本被認(rèn)為是PHP在2004年發(fā)布PHP5后最重要的變化。

新功能

PHP7有加入幾十個(gè)功能,最顯著的是下面提到 -

改進(jìn)的性能 - PHPNG代碼合并在PHP7中,這是比 PHP5快兩倍;

降低內(nèi)存消耗 - 優(yōu)化后PHP7使用較少的資源;

標(biāo)量類型聲明 - 現(xiàn)在,參數(shù)和返回值類型可以被強(qiáng)制執(zhí)行;

一致性的64位支持 - 64位架構(gòu)機(jī)器持續(xù)支持;

改進(jìn)異常層次結(jié)構(gòu) - 異常層次結(jié)構(gòu)得到改善;

許多致命錯(cuò)誤轉(zhuǎn)換成異常 - 異常的范圍增大覆蓋為許多致命的錯(cuò)誤轉(zhuǎn)化異常;

安全隨機(jī)數(shù)發(fā)生器 - 加入新的安全隨機(jī)數(shù)生成器的API;

已過時(shí)的API和擴(kuò)展刪除 - 不同的舊的和不支持的應(yīng)用程序和擴(kuò)展,從最新的版本中刪除;
null合并運(yùn)算符(??)的新空合并運(yùn)算符被加入;
返回和標(biāo)量類型聲明支持返回類型和參數(shù)類型也被加入;
增加了對(duì)匿名匿名類的支持;
零成本聲明支持零成本加入斷言。

PHP7使用新的 Zend Engine 3.0 提高應(yīng)用程序性能兩倍,比PHP5.6 低了 50% 的內(nèi)存消耗。 它可以服務(wù)于更多的并發(fā)用戶,無(wú)需任何額外的硬件??紤]到當(dāng)今的工作量 PHP7設(shè)計(jì)并重構(gòu)。

PHP7 - 標(biāo)量類型聲明

在PHP7有一個(gè)新的功能,標(biāo)量類型聲明已被引入。標(biāo)量類型聲明有兩種選擇:

強(qiáng)制 - 強(qiáng)制性是默認(rèn)模式,不需要指定。

嚴(yán)格 - 嚴(yán)格模式有明確的暗示。

以下幾種類型的函數(shù)參數(shù)可以通過上述方式強(qiáng)制執(zhí)行:

int

float

bool

string

interfaces

array

callable

示例 - 強(qiáng)制模式

// Coercive mode
function sum(int ...$ints)
{
return array_sum($ints);
}

print(sum(2, "3", 4.1));
?>

瀏覽器將產(chǎn)生以下輸出 -

9

示例 - 嚴(yán)格模式

// Strict mode
declare(strict_types=1);

function sum(int ...$ints)
{
return array_sum($ints);
}

print(sum(2, "3", 4.1));
?>

瀏覽器將產(chǎn)生以下輸出 -

Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, ..

PHP7 - 返回類型聲明

在PHP7中有一個(gè)新的功能,已引入返回類型聲明。返回類型聲明指定一個(gè)函數(shù)的返回值類型。以下類型返回類型是可以聲明的:

int

float

bool

string

interfaces

array

callable

示例 - 有效的返回類型

declare(strict_types=1);

function returnIntValue(int $value): int
{
return $value;
}

print(returnIntValue(5));
?>

瀏覽器將產(chǎn)生以下輸出-

5

示例 - 無(wú)效的返回類型

declare(strict_types=1);

function returnIntValue(int $value): int
{
return $value + 1.0;
}

print(returnIntValue(5));
?>

這將產(chǎn)生以下瀏覽器輸出 -

Fatal error: Uncaught TypeError: Return value of returnIntValue() must be of the type integer, float returned

PHP7 - Null合并運(yùn)算符

PHP7一個(gè)新的功能,空合并運(yùn)算符(??)已經(jīng)推出。它是用來(lái)與isset()函數(shù)函數(shù)一起替換三元操作。如果存在且不是 NULL 空合并運(yùn)算符返回它的第一個(gè)操作數(shù);否則返回第二個(gè)操作數(shù)。
示例

// fetch the value of $_GET["user"] and returns "not passed"
// if username is not passed
$username = $_GET["username"] ?? "not passed";

print($username);
print("
");

// Equivalent code using ternary operator
$username = isset($_GET["username"]) ? $_GET["username"] : "not passed";

print($username);
print("
");
// Chaining ?? operation
$username = $_GET["username"] ?? $_POST["username"] ?? "not passed";

print($username);
?>

這將在瀏覽器產(chǎn)生以下輸出 -

not passed
not passed
not passed

PHP7飛船操作符

在PHP7中有一個(gè)新的功能-飛船操作符相繼引入。它是用于比較兩個(gè)表達(dá)式。當(dāng)?shù)谝粋€(gè)表達(dá)式較第二個(gè)表達(dá)式分別小于,等于或大于時(shí)它分別返回-1,0或1。
示例

//integer comparison
print( 1 <=> 1);print("
");
print( 1 <=> 2);print("
");
print( 2 <=> 1);print("
");
print("
");
//float comparison
print( 1.5 <=> 1.5);print("
");
print( 1.5 <=> 2.5);print("
");
print( 2.5 <=> 1.5);print("
");
print("
");
//string comparison
print( "a" <=> "a");print("
");
print( "a" <=> "b");print("
");
print( "b" <=> "a");print("
");
?>

這將在瀏覽器產(chǎn)生以下輸出 -

0
-1
1

0
-1
1

0
-1
1

PHP7 - 常量數(shù)組

數(shù)組常量現(xiàn)在可以使用 define() 函數(shù)定義。在PHP5.6中,它們只能使用const關(guān)鍵字定義。
示例

//define a array using define function
define("animals", [
"dog",
"cat",
"bird"
]);

print(animals[1]);
?>

這將在瀏覽器產(chǎn)生以下輸出 -

cat

PHP7 - 匿名類

PHP7 - 匿名類

匿名類現(xiàn)在可以使用 new class 來(lái)定義。匿名類可以使用來(lái)代替完整的類定義。
示例

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) {

  print($msg);

}
});

$app->getLogger()->log("My first Log Message");
?>

這將在瀏覽器產(chǎn)生以下輸出 -

My first Log Message

PHP7 - Closure::call()

Closure::call() 方法加入到臨時(shí)綁定(bindTo)的對(duì)象范圍,以簡(jiǎn)便方式封閉和調(diào)用它 它相比綁定到PHP5.6性能更快。
示例 - PHP7之前版本

class A {
private $x = 1;
}

// Define a closure Pre PHP 7 code
$getValue = function() {
return $this->x;
};

// Bind a clousure
$value = $getValue->bindTo(new A, "A");

print($value());
?>

這將在瀏覽器產(chǎn)生以下輸出 -

1

示例-PHP7+

class A {
private $x = 1;
}

// PHP 7+ code, Define
$value = function() {
return $this->x;
};

print($value->call(new A));
?>

這將在瀏覽器產(chǎn)生以下輸出 -

1

PHP7- 過濾unserialize()

PHP7引入了過濾 unserialize()函數(shù)以在反序列化不受信任的數(shù)據(jù)對(duì)象時(shí)提供更好的安全性。它可以防止可能的代碼注入,使開發(fā)人員能夠使用序列化白名單類。
示例

class MyClass1 {
public $obj1prop;
}
class MyClass2 {
public $obj2prop;
}

$obj1 = new MyClass1();
$obj1->obj1prop = 1;
$obj2 = new MyClass2();
$obj2->obj2prop = 2;

$serializedObj1 = serialize($obj1);
$serializedObj2 = serialize($obj2);

// default behaviour that accepts all classes
// second argument can be ommited.
// if allowed_classes is passed as false, unserialize converts all objects into __PHP_Incomplete_Class object
$data = unserialize($serializedObj1 , ["allowed_classes" => true]);

// converts all objects into __PHP_Incomplete_Class object except those of MyClass1 and MyClass2
$data2 = unserialize($serializedObj2 , ["allowed_classes" => ["MyClass1", "MyClass2"]]);

print($data->obj1prop);
print("
");
print($data2->obj2prop);
?>

這將在瀏覽器產(chǎn)生以下輸出 -

1
2

PHP7 - 國(guó)際字符

在PHP7,新的 IntlChar 類添加其目的是公開更多的ICU功能。 這個(gè)類定義了許多可用于操縱Unicode字符的靜態(tài)方法和常數(shù)。你需要在使用這個(gè)類之前安裝 Intl 擴(kuò)展。
示例

printf("%x", IntlChar::CODEPOINT_MAX);
print (IntlChar::charName("@"));
print(IntlChar::ispunct("!"));
?>

這將在瀏覽器產(chǎn)生以下輸出 -

10ffff
COMMERCIAL AT
true

PHP7 - CSPRNG

在PHP7,以下兩個(gè)新的函數(shù)引入以產(chǎn)生一個(gè)跨平臺(tái)的方式加密安全整數(shù)和字符串。

random_bytes() - 生成加密安全偽隨機(jī)字節(jié)。

random_int() - 生成加密安全偽隨機(jī)整數(shù)。

random_bytes()
random_bytes()適合于使用來(lái)生成密碼,密碼學(xué)隨機(jī)的任意長(zhǎng)度的字符串,如:生成 salt,密鑰或初始向量。
語(yǔ)法

string random_bytes ( int $length )

參數(shù)

length - 返回隨機(jī)串的字節(jié)長(zhǎng)度

返回值

返回包含加密安全隨機(jī)字節(jié)的請(qǐng)求數(shù)量的字符串。

錯(cuò)誤/異常

如果無(wú)法找到隨機(jī)性的適當(dāng)源,將引發(fā)異常
如果給定參數(shù)無(wú)效,TypeError將被拋出
如果給出字節(jié)長(zhǎng)度無(wú)效,錯(cuò)誤將被拋出

示例

$bytes = random_bytes(5);
print(bin2hex($bytes));
?>

這將在瀏覽器產(chǎn)生以下輸出 -

54cc305593

random_int()
random_int()產(chǎn)生適合于用于結(jié)果是非常重要的加密隨機(jī)整數(shù)。
語(yǔ)法

int random_int ( int $min , int $max )

參數(shù)

min - 返回最小值,它必須是PHP_INT_MIN或更大的值

max - 返回最大值,它必須是小于或等于PHP_INT_MAX

返回值

返回最小值(min)到最大(max)的范圍內(nèi),包括加密安全隨機(jī)整數(shù)。

錯(cuò)誤/異常

如果無(wú)法找到隨機(jī)性一個(gè)適當(dāng)?shù)脑?,將引發(fā)異常
如果給定參數(shù)無(wú)效,TypeError 將被拋出
如果 max 小于 min 時(shí),錯(cuò)誤將被拋出

示例

print(random_int(100, 999));
print("
");
print(random_int(-1000, 0));
?>

這將在瀏覽器產(chǎn)生以下輸出 -

614
-882

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/26238.html

相關(guān)文章

  • PHP 7 修改什么 -- 2

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

    leeon 評(píng)論0 收藏0
  • PHP問題定位】修改數(shù)據(jù)庫(kù)字段導(dǎo)致的fpm的coredump問題定位

    摘要:順風(fēng)車運(yùn)營(yíng)研發(fā)團(tuán)隊(duì)黃桃背景線上零星會(huì)出現(xiàn)進(jìn)程及進(jìn)程占用內(nèi)存超過限制等報(bào)警告,并且兩者報(bào)警的時(shí)間上往往都比較接近,如下原因分析時(shí)間上接近,那么出現(xiàn)兩者報(bào)警的原因有可能是相同的,登錄機(jī)器調(diào)試生成文件 順風(fēng)車運(yùn)營(yíng)研發(fā)團(tuán)隊(duì) 黃桃 背景 線上零星會(huì)出現(xiàn)fpm進(jìn)程coredump 及 fpm進(jìn)程占用內(nèi)存超過限制等報(bào)警告,并且兩者報(bào)警的時(shí)間上往往都比較接近,如下: showImg(https://...

    ASCH 評(píng)論0 收藏0
  • Python 實(shí)現(xiàn)圖書超期提醒小幫手(修改版)

    摘要:前期工作準(zhǔn)備得差不多了,開始找這個(gè)的提交部分的內(nèi)容了,我們從登錄頁(yè)面應(yīng)該也可以知道我們需要提交學(xué)號(hào)密碼驗(yàn)證碼這三個(gè)。差點(diǎn)忘了把發(fā)送郵件的截圖發(fā)出來(lái) 一、實(shí)現(xiàn)目的 本來(lái)就很喜歡逛圖書館,時(shí)不時(shí)去借本書(注:借的都沒看過),但我這個(gè)學(xué)期突然發(fā)現(xiàn)了問題,每本書都可以借兩個(gè)月,但不幸的是我最近一學(xué)期借的書全部超期,一天一毛錢,我心疼這錢?。。。§`機(jī)一動(dòng),為什么不寫個(gè)腳本來(lái)通知自己圖書超期呢?說...

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

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

0條評(píng)論

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