我正在尝试使用OO PHP但是当我尝试代码时,我得到错误,说dbhost,dbuser,dbpass和dbname是未定义的。 Netbeans也给了我一个警告,说他们可能没有初始化。 删除static关键字给我一个错误,说'Unexpected'$ dbhost“'。 有谁知道我做错了什么?
<?php
class DatabaseManager {
private static $dbhost = 'localhost';
private static $dbuser = 'root';
private static $dbpass = '';
private static $dbname = 'app_db';
public static function getConnection(){
$dbconn;
try {
$dbconn = new PDO('mysql:host='.$dbhost,'dbname='.$dbname,
$dbuser, $dbpass);
} catch (PDOException $e) {
echo "Could not connect to database";
echo $e;
exit;
}
return $dbconn;
}
}
?>
答案 0 :(得分:3)
您已将变量声明为静态。在php 5.2或更高版本中像这样引用它们:
$dbconn = new PDO('mysql:host='.self::$dbhost,'dbname='.self::$dbname,
self::$dbuser, self::$dbpass);
在PHP 5.3或更高版本中,如果您将它们从私有设置为受保护,您也可以使用:
$dbconn = new PDO('mysql:host='.static::$dbhost,'dbname='.static::$dbname,
static::$dbuser, static::$dbpass);
它们的行为类似,但如果扩展类,则static关键字允许后期静态绑定。