在PHP类中使用外部变量
我对PHP类非常陌生,所以如果答案很明显,请原谅我。我试图弄清楚如何在类内部使用在类外部定义的变量。这是一个非常粗糙的例子在PHP类中使用外部变量,php,Php,我对PHP类非常陌生,所以如果答案很明显,请原谅我。我试图弄清楚如何在类内部使用在类外部定义的变量。这是一个非常粗糙的例子 $myVar = 'value'; class myClass { private $class_var = $myVar; //REST OF CLASS BELOW } 我知道上面的方法不起作用,但如何在类中使用外部$myVar?尝试以下方法: $myVar = 'value'; class myClass { private $class_var;
$myVar = 'value';
class myClass {
private $class_var = $myVar;
//REST OF CLASS BELOW
}
我知道上面的方法不起作用,但如何在类中使用外部$myVar?尝试以下方法:
$myVar = 'value';
class myClass {
private $class_var;
public function __construct($myVar) {
$this->class_var=$myVar;
}
//REST OF CLASS BELOW
}
声明类时,您需要像这样传递
$myVar
,$myClass=newmyclass($myVar)代码>每个函数都有自己的“作用域”。您可以通过在函数内将变量声明为全局变量来覆盖它,如下所示:
$myVar = 'value';
class myClass {
public function __construct() {
global $myVar;
$this->class_var=$myVar;
}
}
$myVar = 'value';
class myClass {
public function myfunction() {
global $myVar;
echo $myVar;
}
}
这将在对象实例中设置变量
但是,请注意,您可以在函数中直接使用它,而无需将其设置为类变量,如下所示:
$myVar = 'value';
class myClass {
public function __construct() {
global $myVar;
$this->class_var=$myVar;
}
}
$myVar = 'value';
class myClass {
public function myfunction() {
global $myVar;
echo $myVar;
}
}
把它交给构造器?你能给我举个例子吗?正如我所提到的,我对课程非常陌生,所以我仍然在学习细节。下面是一个例子,如果你想得到变量,你可以为它创建一个评估方法。为了记录在案,是David Chen首先进行了有问题的编辑,而不是PeeHaa。PeeHaa进行了一次意外编辑,然后将其回滚到David所做的编辑。随后,"战争"接踵而至。我同意额外的措辞是不必要的,David删除它是正确的,但我不希望看到这些类型的编辑导致大量的回滚。我认为这两个人应该停止跳探戈StackOverflow什么时候变成了什么?然后您可以在创建对象时将其传递给构造函数。。。授予。。。但这就是问题所在,不是吗?我想这不是你想要的。请看上面的评论。@Theurrican为什么你认为这是错误的。我对你的答案投了反对票,因为使用global
是一种可怕的做法。所以请不要这样。@Thecurrican我认为我们不应该容忍或支持OP(或一般新用户)把所有东西都扔出窗外,而仅仅是global
it。DI是一种策略,这是有原因的。@Thecurrican您关于类可能是静态的建议并没有通过给出的代码得到证实-没有static
关键字,给对象属性一个初始值是构造函数的责任,正如您的答案和DaveChen的说明。我同意不提及global
是一个错误,但它可能总是伴随着一些警告——例如,正如您所说,这可能是迁移旧代码的一种方式,而旧代码不能简单地去全球化。您可能想读一下:@PeeHaa埽 这是一个如此彻底的答案,我投票赞成将此问题作为该问题的重复问题结束,而不是重复讨论。此答案的前半部分是一个有用的补充,其中警告“这不是最佳解决方案,但可用于与现有代码集成”。后半部分只是鼓励了错误的做法——至少如果全局
被约束到构造函数,那么您就限制了对该全局变量的引用数量,甚至可以在将来的某个时候将其迁移到DI。