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

时间:2010-11-03 17:22:05

标签: php variable-variables

  

可能重复:
  what's an actual use of variable variables?

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

E.g。这样:

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

echo $hello;

1 个答案:

答案 0 :(得分: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;

但是我不想让下一个不得不重命名我的常人的生活变得艰难!

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

(但就个人而言,我会说,明确指出!)