PHP7 新特征介绍
1、返回类型介绍
在PHP 7中,引入了一个新函数返回类型声明,返回类型声明指定函数应返回的值的类型,可以声明返回类型的以下类型。
- int
- float
- boolean
- string
- interfaces
- array
- callable
有效返回类型
<?php declare(strict_types=1); function returnIntValue(int $value): int { return $value; } print(returnIntValue(5)); ?>
它产生以下浏览器输出-
5
无效返回类型
<?php declare(strict_types=1); function returnIntValue(int $value): int { return $value + 1.0; } print(returnIntValue(5)); ?>
它产生以下浏览器输出-
Fatal error: Uncaught TypeError: Return value of returnIntValue() must be of the type integer, float returned...
2、空合并运算符
在PHP 7中,引入了一个新函数空合并运算符(??)。它与isset()函数一起用于替换三元操作。 Null 合并运算符如果存在且不为NULL,则返回其第一个操作数,否则返回第二个操作数。
<?php //fetch the value of $_GET['user'] and returns 'not passed' //if username is not passed $username=$_GET['username'] ?? 'not passed'; print($username); print("<br/>"); //Equivalent code using ternary operator $username=isset($_GET['username']) ? $_GET['username'] : 'not passed'; print($username); print("<br/>"); //Chaining ?? operation $username=$_GET['username'] ?? $_POST['username'] ?? 'not passed'; print($username); ?>
它产生以下浏览器输出-
not passed not passed not passed
3、组合比较符介绍
在PHP 7中,引入了一项新函数,即<=>组合比较操作,用于比较两个数。当第一个表达式分别小于,等于或大于第二个表达式时,将返回-1、0或1。
<?php //integer comparison print( 1 <=> 1);print("<br/>"); print( 1 <=> 2);print("<br/>"); print( 2 <=> 1);print("<br/>"); print("<br/>"); //float comparison print( 1.5 <=> 1.5);print("<br/>"); print( 1.5 <=> 2.5);print("<br/>"); print( 2.5 <=> 1.5);print("<br/>"); print("<br/>"); //string comparison print( "a" <=> "a");print("<br/>"); print( "a" <=> "b");print("<br/>"); print( "b" <=> "a");print("<br/>"); ?>
它产生以下浏览器输出-
0 -1 1 0 -1 1 0 -1 1
4、常量数组
现在可以使用 define()函数定义数组常量。在PHP 5.6中,只能使用 const 关键字定义它们。
<?php //define a array using define function define('animals', [ 'dog', 'cat', 'bird' ]); print(animals[1]); ?>
它产生以下浏览器输出-
cat
5、闭包
Closure::call()方法是一种快捷方式,用于将对象范围临时绑定到闭包并调用它。与PHP 5.6的 bindTo 相比,它的性能要快得多。
PHP 7之前的版本
<?php 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()); ?>
输出-
1
PHP 7+版本
<?php class A { private $x=1; } //PHP 7+ code, Define $value=function() { return $this->x; }; print($value->call(new A)); ?>
输出-
1
6、加密
在PHP 7中,引入了以下两个新函数,以跨平台的方式生成具有密码安全性的整数和字符串。
-
random_bytes() - 生成加密安全的伪随机字节。
-
random_int() - 生成加密安全的伪随机整数。
random_bytes()
random_bytes()生成一个任意长度的加密随机字节串,该字符串适合加密用途。
string random_bytes ( int $length )
-
length - 应该以字节为单位返回的随机字符串的长度。
random_bytes 返回值
-
返回一个字符串,该字符串包含请求的加密安全随机字节数。
<?php $bytes=random_bytes(5); print(bin2hex($bytes)); ?>
它产生以下浏览器输出-
54cc305593
random_int()
random_int()生成适用于无偏输出至关重要的加密随机整数。
int random_int ( int $min , int $max )
-
min - 要返回的最小值,必须为 PHP_INT_MIN 或更高。
-
max - 要返回的最大值,该值必须小于或等于 PHP_INT_MAX 。
random_int 返回值
-
返回范围从min到max(含)的加密安全随机整数。
<?php print(random_int(100, 999)); print(""); print(random_int(-1000, 0)); ?>
它产生以下浏览器输出-
614 -882
7、intval() 介绍
PHP 7引入了一个新函数 intdiv(),该函数对其操作数执行整数除法并将该除法返回为int。
<?php $value=intdiv(10,3); var_dump($value); print(" "); print($value); ?>
它产生以下浏览器输出-
int(3) 3
链接:https://www.learnfk.com
来源:Learnfk无涯私塾网