php 7 新特性
PHP7,一个新的功能,标量类型声明已被引入。标量声明两种选择方式
1. 一般方式 - 默认模式
<?php function test(int ... $ints){ return array_sum($ints); } print(test('2',5,5,5));
2. 严格方式 - 严格模式有神明的暗示
<?php declare(strict_types=1); function test(int ... $ints){ return array_sum($ints); } print(test('2',5,5,5.5));
空合并运算符
<?php $name = 'zhangsan'; $name = $name ?? "NoName"; echo $name;
飞船操作符
它用于比较两个表达式。当第一个表达式比第二个表达式分别小于,等于或大于时,他分别返回-1,0或1
<?php print( 1 <=> 1);echo "<br/>"; // 0 print( 1 <=> 2);echo "<br/>"; // -1 print( 2 <=> 1);echo "<br/>"; // 1 //float : print( 1.5 <=> 1.5);echo "<br/>"; // 0 print( 1.5 <=> 2.5);echo "<br/>"; // -1 print( 2.5 <=> 1.5);echo "<br/>"; // 1 // string : 按照ASK码进行判断 print( "a" <=> "a");echo "<br/>"; // 0 print( "a" <=> "b");echo "<br/>"; // -1 print( "b" <=> "a");echo "<br/>"; // 1
PHP常量数组
数组常量现在可以使用define() 函数定义。在PHP5.6,它只能用const关键字定义
<?php //define a array using define function define('animals',['dog','cat','bird']); print_r(animals['1']);
在PHP7中,匿名类现在可以使用new class 来定义。匿名类可以使用来代替完整的类定义
<?php interface Logger { public function logs(string $msg); } class Application { private $logger; public function getLogger () { return $this->logger; } public function setLogger(Logger $logger){ $this->logger = $logger; } } $app = new Application; $app->setLogger(new class implements Logger{ public function logs(string $msg){ print($msg); } }); $app->getLogger()->logs('My first Logs Message');
PHP use 语句
从PHP7起,单次使用use 语句可以用来从同一个命名空间导入类,函数和常量(而不用多次使用use语句)
<?php use com\yiibai\ClassA; use com\yiibai\ClassB; use com\yiibai\ClassC as ClassA // php 7 + code use com\yiibai\{ClassA,ClassB,ClassC as C}
PHP 7.1 新添加了捕获多种异常 / 错误类的语法 -- 通过树杠“|” 来实现
<?php try{ throw new LengthException("LengthException"); } catch (\DivisionByZeroError | \LengthException $e) { echo "出错消息 --- ",$e->getMessage(),PHP_EOL; } catch (\Exception $e) { echo "出错消息 --- ",$e->getMessage(),PHP_EOL; } finally { }
PHP7整数除法
PHP引入了intdiv() 的新函数,它执行操作数的整数除法并返回结果为 int 类型。
<?php $value = intdiv(10,3); var_dump($value); //3
PHP7废弃的功能
PHP4风格的构造函数
php4 式构造函数,它与类的名称相同,现在将被在未来移除。php7 将出发E_DEPRECATED。类实现构造函数 __construct() 方法不受影响
<?php class A { function A(){ print('Style Constructor'); } }
静态调用非静态方法
非静态方法静态调用已被废用,并且可能在将来被移除。
<?php class A { function b(){ print('Non-static call'); } }
password_hash() - salt 选项
password_hash() 函数的salt选项已被启用,使开发人员不会产生他们自己的(通常是不安全的)salt。函数本身生成一个加密的salt,
在开发者没有提供salt值时 - 因此,制定salt 生成不在需要了。