class 中的未定义变量 $conx

undefined variable $conx in class

我想知道你能否解释为什么 PHP 在 __construct 方法中包含文件时会这样。

class sitePosting{

private $conx;

public function __construct() {
    include_once("".$_SERVER['DOCUMENT_ROOT']."/auth/db_conx.php");
    $this->conx = $conx;
}

似乎如果我调用另一个 class 并在其 __construct 中包含此文件,我在第一个 class 中尝试使用 $conx 时出现未定义变量错误,但据我了解,首次构建对象时不是 __construct 运行?

更奇怪的是,如果我改变...

include_once("".$_SERVER['DOCUMENT_ROOT']."/auth/db_conx.php");

include("".$_SERVER['DOCUMENT_ROOT']."/auth/db_conx.php");

这完全解决了问题,但我不知道为什么

如果能深入了解发生这种情况的原因,我们将不胜感激。

谢谢,

顾名思义:include_once 只包含文件一次。如果您之前包含它,它将不会再次包含。此外,classes 和函数看不到全局范围的变量,这与 JavaScript 不同。这就是为什么无法从 You sitePosting class.

中访问 $conx 变量的原因

如果您将 $conx 作为 class 参数放置会更好:

public function __construct($conx) {
    $this->conx = $conx;
}

它叫做依赖注入,绝对是一个很好的使用习惯。使您的代码更加清晰易懂。