我正在开发一个使用PHP的游戏脚本,并以与我构建我的许多网站类似的方式接近它。我有一个声明单个变量的习惯,这个变量是一个stdClass,它包含许多对执行很重要的其他变量。然后如果我需要函数内部的东西(如果它没有在参数中传递),我只使用全局$变量,在这种情况下是$ ar。
$ar = new stdClass;
$ar->i = new stdClass;
$ar->s = new stdClass;
$ar->i->root = "/home/user";
/* Directory where log files are to be stored. */
$ar->i->logs = "{$ar->i->root}/logs";
/* Directory where the banlist is. */
$ar->i->bl = "{$ar->i->root}/customize/settings/bannedaccounts.txt";
/* Directory where the silencelist is. */
$ar->i->sl = "{$ar->i->root}/customize/settings/silencedaccounts.txt";
/* How many points should be awarded for 1st place, 2nd place... etc. */
$ar->s->points = array(10, 7, 5, 4, 3, 2, 1, 1, 1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1);
因此,如果我在函数中使用上述变量之一,我会像这样接近它。
public function run() {
global $ar;
//do something with the variable..
}
有人建议不要这样做吗?使用单个变量并将其包含在很多函数中是一种不好的做法吗?我知道创建仅使用给定参数的函数是可取的,但我问这个关于PHP性能而不是编程清晰度。谢谢!
答案 0 :(得分:1)
汇集在一起表示对象的数据元素应该是一个对象。如果你有不相关的东西,不要把它塞在同一个对象中。
如果您需要全局范围(通常不需要),则可以使用$GLOBALS
。但是,对于大多数项目,我建议您遵循OOP原则。至少使用函数参数。
如果你有一个像run()
这样需要这些变量的函数库(或者,甚至只是run()
!),那么有一个实用程序类,其中那些变量是该类的成员。