PHP:如何将对象转换为继承类?

时间:2010-06-14 01:22:54

标签: php oop pdo pdostatement

我想继承PDOStatement类并在我的网站脚本中使用它。

但我很沮丧如何获得所需的对象。 PDO :: query只返回直接的PDOStatement对象,看起来没有其他方法可以创建PDOStatement对象或继承的类。

最初我想将PDOStatement对象移动到继承类的构造函数 这样的事情:

$stmt = PDO -> query("select * from messages");
$messageCollection = new Messaging_Collection($stmt);

但是如何将PDOStatement的实例设为继承对象(Messaging_Collection)。这对我来说是个大问题。

class Messaging_Collection extends PDOStatement
{
public function __construct(PDOStatement $stmt)
{
//there i should to transform $stmt to $this
// direct $this = $stmt is not possible
// is there other right way?
}

1 个答案:

答案 0 :(得分:2)

完成你想要做的事的最简单的方法实际上是这样的:

class Messaging extends PDO {
    function __construct($dsn="", $username="", $password="", $driver_options=array()) 
    {       
        parent::__construct("mysql:host=" . self::$host_name . ";dbname=" .self::$db_name, self::$username, self::$password, self::$driver_options);
        $this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('Messaging_Collection', array($this)));
    }
}

基本上,您可以使用setAttribute()方法覆盖自定义PDO类使用的默认语句类。