0

可能重复:
变量变量的实际用途是什么?

是否存在 PHP 的变量变量使解决方案更清晰的情况?

例如这个:

$a = 'hello';
$$a = 'hello, world!';

echo $hello;
4

1 回答 1

1

我的示例并不完全涉及变量变量,但其意图相似,因为为了清楚起见,它涉及从包含类实例的变量中访问类常量。

当您不使用命名空间时,最终类名会变得很长。本周我正在编写一些代码,需要执行一些 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;

但我不想让下一个不得不重命名我的常数的可怜灵魂过不下去!

因此,虽然不完全相同,但这为您提供了变量变量的一些可能用途的真实示例。

(但就个人而言,我会说,避开!)

于 2010-11-03T18:35:31.463 回答