【发布时间】:2014-10-02 07:21:03
【问题描述】:
我有一个父类 (DB),它有一个名为 con() 的公共方法。
此方法应返回 private $con 内部的任何内容 - 它在它自己的类内部和外部都执行此操作。
class DB
{
private $con = array();
public function add($alias, $db, $un, $pw, $desc)
{
try {
$options = array(/*PDO OPTIONS*/)
$this->con[$alias] = array(
'alias' => $alias,
'db' => $db,
'dbh' => new PDO('mysql:host=localhost;dbname='.$db.';charset=utf8', $un, $pw, $options), 'desc'=>$desc);
} catch(PDOException $e) {
/* return error message */
}
}
public function con()
{
return $this->con;
}
}
我正在添加这样的连接:
$db = new DB();
$db->add('alias1','databasename','username','password','an optional short description');
$db->add('alias2','databasename2','username2','password2','');
现在,private $con 应该填充两个连接 - 就是这样。con() 方法现在应该返回这些连接 - 它也这样做:
我把这个测试函数放在KD-class里面:
public function aliases()
{
foreach($this->con() as $con){ // this should returns an array with the aliases.
$aliases[] = $con['alias'];
}
return $aliases;
}
以下代码返回:array(2) { [0]=> string(4) "alias1" [1]=> string(4) "alias2" }
<?=var_dump($db->aliases())?>
现在,我还在扩展DB 类的子类中创建了useAliases() 作为测试方法:
class SQL extends DB
{
public function useAliases()
{
var_dump($this->aliases());
}
}
以下代码返回:NULL NULL
$sql = new SQL();
var_dump($sql->useAliases());
为什么会这样?我预计useAliases() 将返回与aliases() 相同的结果。
【问题讨论】:
标签: php class parent-child