【发布时间】:2013-02-02 12:31:52
【问题描述】:
我需要一些关于 php 对象继承情况的指导。 我有: 像这样的配置对象:
configuration{
var driver = 'mysql'; // or 'mssql';
var host = 'database_host';
var user = 'database_user';
var password = 'database_password';
var name = 'database_name';
}
两个数据库处理程序类:
class mysql{
public mysql(){} // connect
public query(){} // set a query
public result(){} // load result
}
class mssql{
public mysql(){} // connect
public query(){} // set a query
public result(){} // load result
}
还有某种类控制器:
class database{
public function __construct(){
$configuration = new configuration;
/*
* now, depending on the value of the $configuration->driver
* my database class must inherit methods from mysql or mssql class
*/
switch( $configuration->driver ){
case 'mysql':
// database inherit mysql methods
break;
case 'mssql':
// database inherit mssql methods
break;
}
}
}
用法如下:
$database = new database;
$database->query( 'select * from some_table' );
$result = $database->result();
所以,当我使用我的 database 类方法时,根据 configuration 对象,我实际上使用 mysql 或 mssql强>方法。 我看到它的方式是不通的,因为我希望我的 database 类继承类 constructor 中的另一个类。
我希望有人能给我一个建议,告诉我如何才能做到这一点.. 让我们说.. 正确的方法。
谢谢。
【问题讨论】:
-
我在这里没有看到任何继承 -
database应该扩展一些东西吗? -
您似乎在谈论“工厂”模式。查一下,可能有助于回答你的问题
-
对于halfer问题,我想要某种动态扩展;问题是我不知道父类是什么,直到数据库构造器中的“切换”。
-
对于thaJeztah,我将记录工厂模式,谢谢
标签: php class inheritance