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 生成不在需要了。

 

posted @ 2018-11-19 11:19  summer_无  阅读(158)  评论(0编辑  收藏  举报