我仍然在玩类,无法运行这个:
class db_connection {
private $dbc;
public function __construct()
{
$this->dbc = new mysqli(HOST_ONE, USER_ONE, PASS_ONE, DB_ONE);
}
public function getDbc()
{
return $this->dbc;
}
}
class db_query extends db_connection{
private $querystring;
private $result;
function __construct ($table, $field) {
$this->querystring = $query = parent::getDbc()->query("SELECT ".$field." FROM ".$table);
$this->result = $row = $query->fetch_assoc();
}
function get_resultset() {
return $this->result;
}
}
这就是我运行它的方式:
$db_conn = new db_connection();
$db = $db_conn->getDbc();
$action = new db_query('datenbanken','id');
$result = $action->get_resultset();
var_dump($result);
建立连接没有任何问题,但它不会用我的类查询数据库。
我不会实现我可以运行查询,只需要设置
$action = new db_query('datenbanken','id');
这行。。。
有人能帮我解决这个问题吗?谢谢
在重写扩展的类时,需要调用父构造函数,因此在本例中为
class db_query extends db_connection{
private $querystring;
private $result;
function __construct ($table, $field) {
parent::__construct(); // now we have $this->dbc constructed
$this->querystring = $query = $this->getDbc()->query("SELECT ".$field." FROM ".$table);
$this->result = $row = $query->fetch_assoc();
}
function get_resultset() {
return $this->result;
}
}
注意,parent关键字仅在您想从扩展的类中调用函数时使用
在您的情况下,$this被填充,因此不需要使用parent::getDbc(),而是应该使用$this->getDbc)
但是,如果您覆盖getDbc,您将拥有:
class my_other_class extends db_connection{
function getDbc() {
// call parent funct
$res = parent::getDbc();
$res = doSomethingWithRes($res);
return $res;
}
}