未定义的可变细节


Undefined variable niggles

下面是我的类。图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。