现在,我正在开发两个与MySQL数据库进行交互的类 - 一个扩展了另一个。在这里,他们是:子类的构造函数如何与PHP中的父类构造函数进行交互?
class DB_MySQL {
protected $dbuser;
protected $dbpass;
protected $dbhost;
protected $dbname;
protected $dbh; // Database connection handle
public function __construct($dbuser, $dbpass, $dbhost, $dbname)
{
$this->dbuser = $dbuser;
$this->dbpass = $$dbpass;
$this->dbhost = $dbhost;
$this->dbname = $dbname;
}
//Used to create connections - almost always called by execute()
protected function connect()
{
try
{
$this->dbh = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
}
catch(PDOException $e)
{
print "Error!: ".$e->getMessage()."<br/>";
die();
}
}
而子类:
class CheckOut extends DB_MySQL{
function __construct()
{
parent::__construct();
}
}
我刚开始写他们,所以没有“肉”给他们呢。如果有人看到任何重大问题或任何建议,请毫不犹豫地指出。
不过,我的问题是子构造函数将如何与父项进行交互。我的计划是简单地创建一个CheckOut对象,而不启动父对象。可以看出,我的父构造函数有四个值。那么,我是否必须在子构造函数中重新定义这些值?要清楚,我的意思是:
class CheckOut extends DB_MySQL{
function __construct($dbuser, $dbpass, $dbhost, $dbname)
{
parent::__construct($dbuser, $dbpass, $dbhost, $dbname);
}
}
并且当然定义了这些变量。或者我可以添加这些值,当我创建对象,它会隐式地传递?
任何帮助表示赞赏。
在这两种情况下,我是否仍然需要启动父类?否则,我可以只使用儿童班吗?顺便说一下,它会做其他的事情 - 只是为了增加一些细节。 – Mlagma
@Mlagma你不需要启动父类,只需使用子类。 – xdazz
我觉得如此。这只是强化了我的信念,即在php.com手册中的评论不是很值得信赖。 – Mlagma