PHP从类函数中访问外部$var
在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(); 类myclass{ 布拉。。。。 布拉。。。。 函数myfunction(){ 如果(isset($some\u external\u var))做某事。。。 } } $some_external_var=true; $obj=新的myclass(); $obj->myfunction();PHP从类函数中访问外部$var,php,global-variables,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(); 类m
谢谢
Global$some\u external\u var代码>
function myfunction() {
Global $some_external_var;
if (!empty($some_external_var)) do something ...
}
}
函数myfunction(){
全球$some_外部变量;
如果(!empty($some\u external\u var))执行某些操作。。。
}
}
但由于Global会自动设置它,请检查它是否为空。这是糟糕的软件设计。为了使类正常工作,需要为其提供数据。因此,将该外部变量传递到类中,否则将创建不必要的依赖项 为什么不在uu construct()期间传递此变量,并使对象在构造期间所做的事情以该变量的真值为条件?您需要在函数内部使用关键字,使外部变量对该函数可见
例如:
$my_var_2 = 'glop';
function test_2()
{
global $my_var_2;
var_dump($my_var_2); // string 'glop' (length=4)
}
test_2();
您还可以使用$GLOBALS
数组,该数组即使在函数内部也始终可见
但是通常认为使用全局变量不是一个好的实践:您的类不应该依赖于某种可能存在或不存在的外部内容
更好的方法是将所需的变量作为参数传递给方法本身,或传递给类的构造函数…使用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();
在较新版本的PHP中,您甚至不需要_construct()-您可以使用类的名称创建一个函数,它的行为就像构造函数一样。例如,假设您有一个名为TestClass TestClass{private x;function TestClass(y){this->x=y;}}的类,这将是一个有效的构造函数。但是我同意…我会把它传递给构造函数。乔·摩根,我很确定旧版本不支持_构造魔法方法,并且要求构造函数共享类的名称。啊,愚蠢的半价。这就是\uu构造
的神奇方法。我是如何知道他的类的名称的?谢谢大家,它不是一个依赖于类的$var,而且很少在一个领域使用。基本上,这个变量用于包含函数输出的另一个文件。