可能重复:
变量变量的实际用途是什么?
是否存在 PHP 的变量变量使解决方案更清晰的情况?
例如这个:
$a = 'hello';
$$a = 'hello, world!';
echo $hello;
可能重复:
变量变量的实际用途是什么?
是否存在 PHP 的变量变量使解决方案更清晰的情况?
例如这个:
$a = 'hello';
$$a = 'hello, world!';
echo $hello;
我的示例并不完全涉及变量变量,但其意图相似,因为为了清楚起见,它涉及从包含类实例的变量中访问类常量。
当您不使用命名空间时,最终类名会变得很长。本周我正在编写一些代码,需要执行一些 switch 语句来确定要从遗留系统的结果中写回的消息,但我不想直接比较结果代码,所以我将代码作为常量放在班上。
想象一下还有七个案例。
switch ($resultFromReset) {
case Application_Users_Results_PasswordResetResult::NEW_PASSWORD_CHANGED_AND_EMAIL_SENT:
$resultMessage = 'Please check your e-mail for instructions';
break;
类名那么长,当我把它作为案例时,它看起来又大又难看。
因此,为了方便自己,我将一个新类保存到一个变量中,并从中引用了常量。
$ResultCode = new Application_Users_Results_PasswordResetResult();
switch ($resultFromReset) {
case $ResultCode::NEW_PASSWORD_CHANGED_AND_EMAIL_SENT:
$resultMessage = 'Please check your e-mail for instructions';
break;
这里的变量对代码进行了整理,使其更加清晰易读。
我本可以更接近你的例子:
$ResultCode = "Application_Users_Results_PasswordResetResult";
switch ($resultFromReset) {
case $ResultCode::NEW_PASSWORD_CHANGED_AND_EMAIL_SENT:
$resultMessage = 'Please check your e-mail for instructions';
break;
但我不想让下一个不得不重命名我的常数的可怜灵魂过不下去!
因此,虽然不完全相同,但这为您提供了变量变量的一些可能用途的真实示例。
(但就个人而言,我会说,避开!)