我有一个配置文件,我在其中定义我的数据库配置。 我的配置文件是
<?php
$config['database']="mydb";
$config['host']="localhost";
$config['username']="root";
$config['password']="";
?>
我有一个配置类,我在分配配置设置,我的配置类就像
class Config {
//put your code here
protected $host = "";
protected $user = "";
protected $password = "";
protected $database = "";
protected function __construct(){
include_once 'configuration.php';
$this->host=$config['host'];
$this->user=$config['username'];
$this->password=$config['password'];
$this->database=$config['database'];
}
}
现在我正在尝试建立与我的连接类的数据库连接,如
include_once 'Config.php';
class Connection extends Config{
private $conn;
function __construct() {
parent::__construct();
try {
$this->conn = new PDO("mysql:host=$this->host;dbname=$this->database", $this->user, $this->password);
} catch (PDOException $pe) {
echo "Error connecting to database. " . $pe->getMessage();
}
}
function getConnectionObject() {
return $this->conn;
}
public function destroyConn() {
$this->conn = null;
}
}
我的问题是,当我尝试为进一步的类获取此连接时,它向我显示空白对象 我的访问数据库连接对象的代码是
class Functions extends Connection {
private $conOb;
function __construct() {
parent::__construct();
$this->conOb = parent::getConnectionObject();
}
function getConnectionObject() {
parent::getConnectionObject();
}
}
如果我在连接类中定义数据库配置,我可以在我的Function类中访问我的连接对象,但是如果我试图通过配置文件设置它来获取Null连接对象。
请告诉我错误的地方。提前谢谢。
答案 0 :(得分:2)
您错过了return
关键字
class Functions extends Connection {
private $conOb;
function __construct() {
parent::__construct();
$this->conOb = parent::getConnectionObject();
}
function getConnectionObject() {
return parent::getConnectionObject();
}
}
顺便说一句,如果您不添加任何内容,则无需重新声明方法getConnectionObject()
。
您可以这样做:
class Functions extends Connection {
function __construct() {
parent::__construct();
}
}
$db = new Functions();
$dbh = $db->getConnectionObject();
如果您在类$conn
中将属性protected
的可见性更改为Connection
,则可以在子类中使用您的连接:
class Functions extends Connection {
function __construct() {
parent::__construct();
}
function doSomething() {
$this->conn->query('SELECT....');
}
}
作为旁注,我建议您查看PHP coding style standards。