在 PHP 中,如何在类的函数中使用外部 $var?例如,假设 $some_external_var 设置为 true 并且您有类似
我的班级{ 布拉...... 布拉...... 功能我的功能(){ 如果 (isset($some_external_var)) 做某事... } } $some_external_var =真; $obj = new myclass(); $obj->myfunction();
谢谢
在 PHP 中,如何在类的函数中使用外部 $var?例如,假设 $some_external_var 设置为 true 并且您有类似
我的班级{ 布拉...... 布拉...... 功能我的功能(){ 如果 (isset($some_external_var)) 做某事... } } $some_external_var =真; $obj = new myclass(); $obj->myfunction();
谢谢
您需要global
在函数中使用关键字,以使外部变量对该函数可见。
例如 :
$my_var_2 = 'glop';
function test_2()
{
global $my_var_2;
var_dump($my_var_2); // string 'glop' (length=4)
}
test_2();
您还可以使用$GLOBALS
始终可见的数组,即使在函数内部也是如此。
但是使用全局变量通常不被认为是一种好习惯:你的类不应该依赖于某种可能存在或不存在的外部东西!
更好的方法是将您需要的变量作为参数传递给方法本身或类的构造函数......
Global $some_external_var;
功能我的功能(){ 全局 $some_external_var; if (!empty($some_external_var)) 做某事... } }
但是因为 Global 会自动设置它,所以检查它是否不为空。
那是糟糕的软件设计。为了让一个类发挥作用,它需要提供数据。因此,将该外部变量传递到您的类中,否则您将创建不必要的依赖项。
为什么不直接在 __construct() 期间传递这个变量,并让对象在构造期间的行为取决于该变量的真值?
使用 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