是否存在PHP的变量变量使解决方案更清晰的情况?
E.g。这样:
$a = 'hello';
$$a = 'hello, world!';
echo $hello;
答案 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;
但是我不想让下一个不得不重命名我的常人的生活变得艰难!
因此,虽然不完全相同,但这为您提供了变量变量的一些可能用途的真实例子。
(但就个人而言,我会说,明确指出!)