MySQLi 奇怪的错误
MySQLi strange errors
我正在尝试扩展 MySQLi class。
<?php
class DataManager extends mysqli {
private $username = "me";
private $password = "notgonnatellyou";
private $dbname = "data";
private $host = "sql.my";
public function __construct() {
return connect();
}
private function connect() {
$connection = parent::__construct($host,$username,$password,$dbname);
return $connection;
}
public function query($query) {
autocommit(false);
if (!($do = parent::query($query))) {
rollback();
return false;
}
else {
commit();
return $do;
}
}
}
?>
现在我收到以下错误:
Fatal error: Access level to DataManager::connect() must be public (as in class mysqli) in /me/datamanager.php on line 37
我不明白为什么它应该是 public...如果我做到了 public,它会说
Call to undefined function connect()
但是如你所见,我只是实现了那个功能...
您的第一个问题是您无法增加从基 class 继承的方法的隐私。如果您有一个 mysqli
的实例并想在其上调用 connect
,如果它出乎意料地私有,您会感到惊讶。这就像有一个 class 和一个未在子 class.
中实现的抽象方法
@devpro 在他们的评论中指出的第二个问题是您必须将 connect
称为 $this->connect();
而不仅仅是 connect()
.
您可能会发现构造函数不能 return 值。构造函数的 "return value" 始终是实例化类型。
此外,您对字段的引用也是错误的。您需要使用$this->host
、$this->username
等
我正在尝试扩展 MySQLi class。
<?php
class DataManager extends mysqli {
private $username = "me";
private $password = "notgonnatellyou";
private $dbname = "data";
private $host = "sql.my";
public function __construct() {
return connect();
}
private function connect() {
$connection = parent::__construct($host,$username,$password,$dbname);
return $connection;
}
public function query($query) {
autocommit(false);
if (!($do = parent::query($query))) {
rollback();
return false;
}
else {
commit();
return $do;
}
}
}
?>
现在我收到以下错误:
Fatal error: Access level to DataManager::connect() must be public (as in class mysqli) in /me/datamanager.php on line 37
我不明白为什么它应该是 public...如果我做到了 public,它会说
Call to undefined function connect()
但是如你所见,我只是实现了那个功能...
您的第一个问题是您无法增加从基 class 继承的方法的隐私。如果您有一个 mysqli
的实例并想在其上调用 connect
,如果它出乎意料地私有,您会感到惊讶。这就像有一个 class 和一个未在子 class.
@devpro 在他们的评论中指出的第二个问题是您必须将 connect
称为 $this->connect();
而不仅仅是 connect()
.
您可能会发现构造函数不能 return 值。构造函数的 "return value" 始终是实例化类型。
此外,您对字段的引用也是错误的。您需要使用$this->host
、$this->username
等