PHP7新特性简述
前端之家收集整理的这篇文章主要介绍了
PHP7新特性简述,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_4030@类型声明
@H
403_0@看
代码,一目了然了。
<div class="jb51code">
<pre class="brush:
PHP;">
class person
{
public function age(int $age) : string
{
return 'Age is ' . $age;
}
}
@H_
403_0@
命名空间与use关键字批量声明
@H_
403_0@非混合模式
PHP;">
use Publishers\Packt\{ Book,Ebook,Video};
use function Publishers\Packt\{ getBook,saveBook };
use const Publishers\Packt\{ COUNT,KEY };
@H_
403_0@混合模式
PHP;">
use Publishers\Packt\{
Book,Video,function getBook,function saveBook,const COUNT,const KEY
};
@H_
403_0@复合模式
PHP;">
use Publishers\Packt\{
Paper\Book,Electronic\Ebook,Media\Video
};
@H_
403_0@匿名类
@H_
403_0@匿名类的声明与使用时同时进行的,具备其他类所具备的所以
功能,区别在于匿名类没有类名。语法如下:
PHP;">
new class(argument) { definition };
@H_
403_0@匿名类是没有类名的,但在
PHP内部,会在内存的引用地址表中为其分配一个全局唯一的
名称。
PHP;">
$name = new class('You') {
public function __construct($name)
{
echo $name;
}
};
@H_
403_0@匿名类可以继承
父类及
父类的
方法。
number;
}
}
$number = new class(5) extends Packt
{
public function __construct(float $number)
{
parent::__construct();
$this->number = $number;
}
};
echo $number->getNumber();
@H_
403_0@匿名类可以继承接口。
name = $name;
$this->address = $address;
}
public function getName() : string
{
return $this->name;
}
public function getAddress() : string
{
return $this->address;
}
}
echo $info->getName() . ' ' . $info->getAddress();
@H_
403_0@匿名类可以嵌套在一个类中使用。
first_number + $this->second_number;
}
public function mutiply_sum()
{
return new class() extends Math
{
public function mutiply(float $third_number) : float
{
return $this->add() * $third_number;
}
};
}
}
$math = new Math();
echo $math->mutiply_sum()->mutiply(2);
@H_
403_0@摒弃老式构造
函数
@H_
403_0@从
PHP4开始,构造
函数可以通过命名与类名一致的方式来声明自己是构造
函数,在
PHP7中这种方式声明构造
函数依然可以使用,但不推荐使用,会
输出不推荐的信息 Deprecated: Methods with the same name as their class will not be constructors in a future version of
PHP; Packt has a deprecated constructor in ...,
PHP7中推荐使用 __construct()。
@H_
403_0@throwable接口
@H_
403_0@从
PHP7开始,程序中的fatal
错误都可以被截获,
PHP7提供了throwable接口,异常与
错误都继承于这个接口。
@H_
403_0@Error
@H_
403_0@现在大多数的fatal
错误情况会抛出一个error实例,类似于截获异常,error实例可以被try/catch截获。
getMessage();
}
@H_
403_0@一些
错误情况只有error的子实例会被抛出,例如 TypeError、DivisionByZeroError、ParseError等。
@H_
403_0@<=>操作符
@H_
403_0@<=>操作符将==、<、>三个比较操作符打包在了一起,具体使用规则如下。
@H_
403_0@操作符两边相等时返回 0
@H_
403_0@操作符左边小于右边时返回 -1
@H_
403_0@操作符左边大于右边时返回 1
@H_
403_0@null合并运算符
@H_
403_0@?? 合并运算符,在第一操作数存在时可被直接返回,否则返回第二操作数。
PHP;">
$title = $post['title'] ?? NULL;
$title = $post['title'] ?? $get['title'] ?? 'No title';
@H_
403_0@uniform变量语法
'second'];
$second = 'two';
echo $$first['name'];
echo ${Sfirst['name']}; //
PHP7
...
echo $object->$methods['title'];
echo $object->{$methods['title']}; //
PHP7
@H_
403_0@主要是因为
PHP7与之前版本
PHP的解析方式不一样,在
PHP7中
加上花括号就可以啦,就像上边
代码这样,否则会报错。
@H_
403_0@常量数组
@H_
403_0@从
PHP5.6开始常量数组可以用const关键字来声明,在
PHP7中常量数组可以通过define
函数来初始化。
PHP;">
const STORES = ['en','fr','ar']; //
PHP5.6
define('STORES',['en','ar']); //
PHP7
@H_
403_0@switch中的default默认值
@H_
403_0@在
PHP7之前,switch语句中允许多个default默认值,从
PHP7开始,只能有一个default默认值,否则会产生fatal级别
错误。
PHP;">
//
PHP7之前
switch (true) {
case 'value':
# code...
break;
default:
# code...
break;
default:
# code...
break;
}
//
PHP7
switch (true) {
case 'value':
# code...
break;
default:
# code...
break;
}
@H_
403_0@session_start
函数中的选项数组
@H_
403_0@在
PHP7之前,使用session的时候都必须先
调用session_start()
函数,且这个
函数并没有参数需要传递,所有session相关的配置都在
PHP.ini
文件中,从
PHP7开始,可以在
调用这个
函数时传递参数选项数组,这些设置信息将覆盖
PHP.ini中的session配置。
3600,'read_and_close' => true
]);
@H_
403_0@unserialize
函数引入过滤器
@H_
403_0@unserialize()可以反序列化任何类型的对象,没有任何过滤项,不安全,
PHP7在unserialize()中引入了过滤器,且默认允许反序列化所有类型的对象。
['Book','Ebook']]);
@H_
403_0@以上所述是小编给大家介绍的
PHP7新特性简述,希望对大家有所帮助!