0

目前我正在重新修改我目前编写的一些代码,如下所示:

<?php
global $foo;
$foo = "foo";

class foo{
   function bar(){
      global $foo;
      return $foo."bar";
   }
}

$class = new foo();
echo foo->bar();
//returns 'foobar';
?>

这行得通,很好。我的问题是,这是包含变量的正确方法吗?我的一些类文件有超过 20 个全局变量,必须在使用它们的每个方法中重新定义为全局变量。

4

1 回答 1

3

尽可能避免使用全局变量。我不会在这里重复为什么,因为有很多关于 SO 的答案解释了为什么它被认为是一种不好的做法(示例)。

相反,将类中需要的变量传递给构造函数,例如:

class foo{

   protected $foo;

   public function __construct($foo){
     $this->foo = $foo;
   }

   public function bar(){
      return $this->foo . "bar";
   }
}

$foo = "foo";
$class = new foo($foo);
echo foo->bar();
于 2013-01-21T01:59:08.960 回答