php如何访问类常量,访问PHP类常量

本文讨论了在PHP中使用双冒号运算符(::)进行静态属性访问时遇到的解析错误。当尝试直接通过对象属性引用静态常量时,PHP解析器会报错。通过实例变量间接访问则可以避免此问题。文章还提到了PHP对于匿名函数作为属性的类似限制,并提及这些限制在PHP的某个版本中可能已得到修复。
摘要由CSDN通过智能技术生成

从PHP交互shell:

php > class Foo { const A = 'a!'; }

php > class Bar { public $foo; }

php > $f = new Foo;

php > $b = new Bar;

php > $b->foo = $f;

php > echo $b->foo::A;

PHP Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM, expecting ',' or ';' in php shell code on line 1

前一个语法失败的原因是PHP解析器不知道如何在属性引用之后解析双冒号.这是否是故意的是未知的.

后一种语法的作用是因为它不直接通过属性,而是通过一个局部变量,解析器接受它作为可以使用的东西:

php > $inst = $b->foo;

php > echo $inst::A;

a!

(顺便说一句,匿名函数作为属性也是一样的限制,你不能直接使用括号来调用它们,你必须首先将它们分配给另一个变量,然后从那里调用它们,这已经在PHP的trunk中修复了,但是我不知道他们是否也修复了双冒号语法.)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值