对于所有类型“void”非法_详细解释PHP 7.4 类型属性

PHP 7.4 中增加了类型化类属性,对 php 的类型系统进行了重大改进。这些更改完全是自愿加入的,不会破坏以前的版本。

在本文中,我们将深入了解该功能,但首先让我们总结一下最重要的几点:

700粉丝福利安排一波,工作中准备的,大家随便拿

程序猿的生活:【社群福利】30G-PHP进阶资料,助力大家都能30K​zhuanlan.zhihu.com
a7f51921e9ca59eecde76f49c5cad839.png

这些更改自 PHP 7.4 起可用,计划于 2019 年 11 月发布

  • 它们仅在类中可用,并且需要访问修饰符:public、protected 或 private;或 var
  • 允许所有类型,但 void 和 callable 除外
  • 他们的实际情况是这样的:
class Foo
{
    public int $a;

    public ?string $b = 'foo';

    private Foo $prop;

    protected static string $static = 'default';
}

未初始化

在进入正题之前,首先要探讨一个与类型属性有关的重要方面。

不管你第一眼看到这段代码是怎么想的,但它的确是合法的

class Foo
{
    public int $bar;
}

$foo = new Foo;

即便是类的实例化后$bar值仍不是整数值的情况下,PHP 也只是会在访问$bar时才会报错:

var_dump($foo->bar);

Fatal error: Uncaught Error: Typed property Foo::$bar 
must not be accessed before initialization

从错误消息中可以看出,出现了一种新的变量状态:未初始化 (uninitialize

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值