PHP从类函数中访问外部$ var

时间:2009-07-31 17:58:49

标签: php global-variables

在PHP中,如何在类中的函数中使用外部$ var?例如,假设$ some_external_var设置为true,并且您有类似

的内容
class myclass {
bla ....
bla ....

function myfunction()  {

  if (isset($some_external_var)) do something ...

   } 

}


$some_external_var =true;

$obj = new myclass();
$obj->myfunction();

由于

5 个答案:

答案 0 :(得分:5)

您需要在函数中使用global关键字,以使外部变量对该函数可见。

例如:

$my_var_2 = 'glop';

function test_2()
{
    global $my_var_2;
    var_dump($my_var_2);  // string 'glop' (length=4)
}

test_2();

您也可以使用$GLOBALS数组,即使在函数内部也是如此。


但是,使用全局变量通常不被认为是一种好习惯:你的类不应该依赖某些可能存在或可能不存在的外部东西!

更好的方法是将您需要的变量作为参数传递给方法本身,或者传递给类的构造函数...

答案 1 :(得分:3)

Global $some_external_var;

function myfunction()  {
  Global $some_external_var;
  if (!empty($some_external_var)) do something ...

   } 

}

但是因为Global会自动设置它,请检查它是否为空。

答案 2 :(得分:3)

这是糟糕的软件设计。为了使类能够运行,需要为其提供数据。因此,将外部var传递给您的类,否则您将创建不必要的依赖项。

答案 3 :(得分:2)

为什么不在__construct()期间传递这个变量,并在构造过程中使对象在该变量的真值上作出条件?

答案 4 :(得分:0)

使用Setters和Getters,或者使用集中式配置,如:

function config()
{
  static $data;

  if(!isset($data))
  {
    $data = new stdClass();
  }

  return $data;
}

class myClass
{
    public function myFunction()
    {
        echo "config()->myConfigVar: " . config()->myConfigVar;
    }
}

并使用它:

config()->myConfigVar = "Hello world";

$myClass = new myClass();
$myClass->myFunction();

http://www.evanbot.com/article/universally-accessible-data-php/24