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;
}
它叫做依赖注入,绝对是一个很好的使用习惯。使您的代码更加清晰易懂。
我想知道你能否解释为什么 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;
}
它叫做依赖注入,绝对是一个很好的使用习惯。使您的代码更加清晰易懂。