下面是我的类。图A
<?php
class qcon{
public static $conn;
function dbcon()
{
if (!$conn)
{
$host = 'x';
$username = 'x';
$password = 'x';
$dbname = 'x';
$conn = mysqli_connect($host , $username , $password ,$dbname);
}
return $conn;
}
}
?>
这里叫它。图B
require_once(class file above);
function openSesame()
{
$boogey = new qcon();
$conn = $boogey->dbcon();
if (!$conn)
{
$this->error_msg = "connection error could not connect to the database:! ";
return false;
}
$this->conn = $conn;
return true;
}
导致
Notice: Undefined variable: conn in C:'...'xxxx'figAclass.php on line 10
我知道我可以简单地关闭错误,但这似乎是不明智的。我看了一个关于未定义变量通知的一般SO问题。显然,这个建议是通用的。尝试了一下isset,这似乎不适合我要做的事情。
根据图A和图B中的代码,是否有任何明显的原因导致通知被标记。您能演示一个与所示现有代码一致的修复程序吗。
不要使用if (!$conn)
,它会检查变量是否为true/false或包含值,而不是是否已定义。使用这个替代:
if(empty($conn))
这将检查变量是否已定义,以及变量是否为NULL/空。
您还希望在类内部使用$this->conn,因为您将其定义为类的变量。
正如我在上面的评论中所说,由于您有一个静态$conn
,因此需要像一样引用它
public function dbconn()
{
if (!self::$conn) {
// blah
}
return self::$conn;
}
发生错误的原因是您试图引用一个名为$conn
的变量,但由于作用域的原因,不存在这样的东西。
当您访问它时,您应该使用$this->conn,例如:
if(!$this->conn){...}
编辑阅读问题过快,抱歉
不能对此使用if (!$conn)
,因为它只会返回'true'或'false'。
用途:
CCD_ 5。