我有一个循环,它将调用该函数。在第一个循环中定义(并在每次迭代时重新分配)变量,这些变量是函数运行所必需的。
循环:
if ($something) {
while (!$recordSet->EOF) {
$variable1 = TRUE;
$variable2 = FALSE;
...
function1()
}
}
功能:
function function1() {
if ($variable1 && !$variable2) {
...
}
}
变量将具有布尔值,并且环境仅限于PHP 4.
我目前正在考虑在while循环和function1中使用global $variable1;
,但我知道全局变量几乎总是不受欢迎。
通常我会使用define("variable1","a value")
,但值会多次更改。
在这种情况下,是否有任何建议或全局定义最佳解决方案?
感谢。
编辑:完全忘了提及。这个文件实际上是一个意大利面条遗留代码,而function1在一百个不同的地方被调用,所有这些都有不同的信息。否则,我会使用参数。答案 0 :(得分:1)
在主要范围内,定义global $variable1
和global $varible2
。
在功能中也这样做。 但这是最糟糕的解决方案。如果这些变量在其他地方发生变化,你会感到困惑。
我认为最好的方法是重构代码,并将可变数作为参数传递。
另一个解决方案可能是为这两个变量创建一个类,并静态设置/获取它们。
class variablesPlaceHolder {
private static $variable1;
private static $variable2;
public static function getVariable1() {
return self::$variable1;
}
public static function getVariable2() {
return self::$variable2;
}
public static function setVariable1($variable1) {
self::$variable1 = $variable1;
}
public static function setVariable2($variable2) {
self::$variable2 = $variable2;
}
}
并在文件中包含此类,您要使用它们,并致电variablesPlaceHolder::setVariable1(anyValue)
variablesPlaceHolder::getVariable1()