在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();
由于
答案 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