如何在类方法中正确使用全局变量

时间:2013-01-21 01:52:10

标签: php

目前我正在重新编写一些我目前编写的代码:

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

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

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

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

1 个答案:

答案 0 :(得分:3)

尽可能避免使用全局变量。我不打算在这里重复原因,因为有很多答案可以解释为什么它被认为是一种不好的做法(example)。

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

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();