时间:2021-05-26
类型声明
看代码,一目了然了。
class person{ public function age(int $age) : string { return 'Age is ' . $age; }}命名空间与use关键字批量声明
非混合模式
use Publishers\Packt\{ Book, Ebook, Video};use function Publishers\Packt\{ getBook, saveBook };use const Publishers\Packt\{ COUNT, KEY };混合模式
use Publishers\Packt\{ Book, Ebook, Video, function getBook, function saveBook, const COUNT, const KEY};复合模式
use Publishers\Packt\{ Paper\Book, Electronic\Ebook, Media\Video};匿名类
匿名类的声明与使用时同时进行的,具备其他类所具备的所以功能,区别在于匿名类没有类名。语法如下:
匿名类是没有类名的,但在PHP内部,会在内存的引用地址表中为其分配一个全局唯一的名称。
$name = new class('You') { public function __construct($name) { echo $name; }};匿名类可以继承父类及父类的方法。
class Packt{ protected $number; public function __construct() { echo 'parent construct'; } public function getNumber() : float { return $this->number; }}$number = new class(5) extends Packt{ public function __construct(float $number) { parent::__construct(); $this->number = $number; }};echo $number->getNumber();匿名类可以继承接口。
interface Publishers{ public function __construct(string name, string address); public function getName(); public function getAddress();}class packt{ protected $number; protected $name; protected $address; public function ...}$info = new class('name', 'address') extends Packt implement Publishers{ public function __construct(string $name, string $address) { $this->name = $name; $this->address = $address; } public function getName() : string { return $this->name; } public function getAddress() : string { return $this->address; }}echo $info->getName() . ' ' . $info->getAddress();匿名类可以嵌套在一个类中使用。
class Math{ public $first_number = 10; public $second_number = 10; public function add() : float { return $this->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);摒弃老式构造函数
从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()。
throwable接口
从PHP7开始,程序中的fatal错误都可以被截获,PHP7提供了throwable接口,异常与错误都继承于这个接口。
Error
现在大多数的fatal错误情况会抛出一个error实例,类似于截获异常,error实例可以被try/catch截获。
try{ ...} catch(Error $e){ echo $e->getMessage();}一些错误情况只有error的子实例会被抛出,例如 TypeError、DivisionByZeroError、ParseError等。
<=>操作符
<=>操作符将==、<、>三个比较操作符打包在了一起,具体使用规则如下。
操作符两边相等时返回 0
操作符左边小于右边时返回 -1
操作符左边大于右边时返回 1
null合并运算符
?? 合并运算符,在第一操作数存在时可被直接返回,否则返回第二操作数。
uniform变量语法
$first = ['name' => 'second'];$second = 'two';echo $$first['name'];echo ${Sfirst['name']}; // PHP7...echo $object->$methods['title'];echo $object->{$methods['title']}; // PHP7主要是因为PHP7与之前版本PHP的解析方式不一样,在PHP7中加上花括号就可以啦,就像上边代码这样,否则会报错。
常量数组
从PHP5.6开始常量数组可以用const关键字来声明,在PHP7中常量数组可以通过define函数来初始化。
const STORES = ['en', 'fr', 'ar']; // php5.6define('STORES', ['en', 'fr', 'ar']); // php7switch中的default默认值
在PHP7之前,switch语句中允许多个default默认值,从PHP7开始,只能有一个default默认值,否则会产生fatal级别错误。
// php7之前switch (true) { case 'value': # code... break; default: # code... break; default: # code... break;}// php7switch (true) { case 'value': # code... break; default: # code... break;}session_start函数中的选项数组
在PHP7之前,使用session的时候都必须先调用session_start()函数,且这个函数并没有参数需要传递,所有session相关的配置都在php.ini文件中,从PHP7开始,可以在调用这个函数时传递参数选项数组,这些设置信息将覆盖php.ini中的session配置。
session_start([ 'cookie_lifetime' => 3600, 'read_and_close' => true]);unserialize函数引入过滤器
unserialize()可以反序列化任何类型的对象,没有任何过滤项,不安全,PHP7在unserialize()中引入了过滤器,且默认允许反序列化所有类型的对象。
$result = unserialize($object, ['allowed_classes' => ['Book', 'Ebook']]);以上所述是小编给大家介绍的PHP7新特性简述,希望对大家有所帮助!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
前言在MACOSX10.11中php的版本是5.5的,近来一年多里,看到了很多关于php7介绍,以为php7增加了很多新特性,也删除了原来很多的老特性,所以一直
Netbeans8.2在这个国庆期间终于发布了,其与PHP相关的新特性主要有:支持PHP7详见前面翻译的一篇文章:Netbeans8.2将支持PHP7编辑器功能
以下是小编给大家整理的关于PHP7的相关更新内容和知识点。新功能PHP7增加了许多特性,其中最重要的特性如下所述•性能改进——在PHP7中合并了PH
PHP的学习新特性最近做的项目使用了php7,但感觉有很多新特性没有用起来。就想总结一下,一些可能会用到的新特性。之前使用的环境是php5.4,所有也会有php
php7发布已有半月,最近有时间了解一下php7的新特性,当然,这个版本最大的特点是性能的提升。在下并非高手,欢迎大家指出错误,同时期待共同交流。PHP语言一个