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

本文探讨了在PHP中为何对类变量使用范围解析运算符会引发错误,并提供了一种无需额外变量的一行代码解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我很好奇为什么在类变量上使用范围解析运算符会导致致命的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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值