0

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

我的班级{
布拉......
布拉......

功能我的功能(){

  如果 (isset($some_external_var)) 做某事...

   }

}


$some_external_var =真;

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

谢谢

4

5 回答 5

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始终可见的数组,即使在函数内部也是如此。


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

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

于 2009-07-31T18:08:33.290 回答
3

Global $some_external_var;

功能我的功能(){
  全局 $some_external_var;
  if (!empty($some_external_var)) 做某事...

   }

}

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

于 2009-07-31T18:00:30.013 回答
3

那是糟糕的软件设计。为了让一个类发挥作用,它需要提供数据。因此,将该外部变量传递到您的类中,否则您将创建不必要的依赖项。

于 2009-07-31T18:05:07.883 回答
2

为什么不直接在 __construct() 期间传递这个变量,并让对象在构造期间的行为取决于该变量的真值?

于 2009-07-31T18:06:39.737 回答
0

使用 Setter 和 Getter,或者可能是集中式配置,例如:

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

于 2009-07-31T18:24:06.360 回答