首页 > 编程 > PHP > 正文

PHP 7.2新特性:参数类型声明(附代码)

2020-03-22 20:32:13
字体:
来源:转载
供稿:网友
php7.2版本具有新特性,功能和改进,可以让我们编写更好的代码,下面的文章中我将介绍php7.2中的一个新的功能:参数类型声明,话不多说,让我们来具体看看正文内容。

参数类型声明

从PHP 5开始,我们可以在函数的声明中指定预期要传递的参数类型。如果给定值的类型不正确,那么PHP将引发错误。参数类型声明(也称为类型提示)指定预期传递给函数或类方法的变量的类型。

来一个例子:

html' target='_blank'>class MyClass { public $var = Hello World $myclass = new MyClass;function test(MyClass $myclass){ return $myclass- echo test($myclass);

在这段代码中,测试函数需要MyClass的一个实例。不正确的数据类型会导致以下致命错误:

Fatal error: Uncaught TypeError: Argument 1 passed to test() must be an instance of MyClass, string given, called in /app/index.php on line 12 and defined in /app/index.php:8

由于PHP 7.2 类型提示可以与对象数据类型一起使用,并且此改进允许将通用对象声明为函数或方法的参数。这里是一个例子:

class MyClass { public $var = class FirstChild extends MyClass { public $var = My name is Jim class SecondChild extends MyClass { public $var = My name is John $firstchild = new FirstChild;$secondchild = new SecondChild;function test(object $arg) { return $arg- echo test($firstchild);echo test($secondchild);

在这个例子中,我们调用了两次测试函数,每次调用都传递一个不同的对象。在以前的PHP版本中这是不可能的。

对象返回类型声明

如果参数类型声明指定函数参数的预期类型,则返回类型声明指定返回值的预期类型。

返回类型声明指定了函数预期返回的变量的类型。

从PHP 7.2开始,我们被允许为对象数据类型使用返回类型声明。这里是一个例子:

class MyClass { public $var = Hello World $myclass = new MyClass;function test(MyClass $arg) : object { return $arg;echo test($myclass)- 

以前的PHP版本会导致以下致命错误:

Fatal error: Uncaught TypeError: Return value of test() must be an instance of object, instance of MyClass returned in /app/index.php:10

当然,在PHP 7.2中,这个代码会回应 Hello World 。

参数类型宽限声明

PHP目前不允许子类和它们的父类或接口之间的参数类型有任何差异。那是什么意思?
考虑下面的代码:

 ?phpclass MyClass { public function myFunction(array $myarray) { /* ... */ }class MyChildClass extends MyClass { public function myFunction($myarray) { /* ... */ }}

这里我们省略了子类中的参数类型。在PHP 7.0中,此代码会产生以下警告:

Warning: Declaration of MyChildClass::myFunction($myarray) should be compatible with MyClass::myFunction(array $myarray) in %s on line 8

自PHP 7.2以来,我们被允许在不破坏任何代码的情况下省略子类中的类型。这个建议将允许我们升级类以在库中使用类型提示,而不需要更新所有的子类。

在列表语法中尾随逗号

数组中最后一项之后的尾随逗号是PHP中的有效语法,有时为了轻松附加新项目并避免由于缺少逗号而导致解析错误,鼓励使用它。自PHP 7.2起,我们被允许在 分组命名空间中使用尾随逗号。

相关文章推荐:

PHP5.5 ~ PHP7.2 新特性整理 - 个人文章

PHP7.2 版本性能介绍

PHP7.2 新功能

以上就是PHP 7.2新特性:参数类型声明(附代码)的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表