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无涯私塾网

posted @ 2021-04-17 08:58  无涯教程  阅读(76)  评论(0)    收藏  举报