作用域运算符 的作用php,php-类变量的作用域解析运算符

我很好奇为什么在类变量上使用范围解析运算符会导致致命的php错误,以及是否有解决方法.

例如:

class StaticTest

{

public static function output()

{

echo "Output called
";

}

}

Class Test

{

public $reference;

public function __construct()

{

$this -> reference = new StaticTest;

}

}

$static_test = new StaticTest;

$static_test::output(); //works as intended

$test = new Test;

$test -> reference::output(); //Unexpcted T_PAAMAYIM_NEKUDOTAYIM

$direct_reference = $test -> reference;

$direct_reference::output(); //works, closest solution i have found, but requires the extra line of code / variable

?>

解决方法:

如果您唯一关心的是代码行数和额外变量,请按照以下步骤在一行中完成操作,而无需创建任何变量:

call_user_func(array(get_class($test->reference), 'output'));

我认为,这相当于:

$direct_reference = $test->reference;

$direct_reference::output();

标签:oop,php

来源: https://codeday.me/bug/20191201/2078421.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值