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

Posted

技术标签:

【中文标题】PHP:如何将对象转换为继承的类?【英文标题】:PHP: How to cast object to inherited class? 【发布时间】:2011-03-03 08:26:47 【问题描述】:

我想继承 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】:

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

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 类要使用的默认语句类。

【讨论】:

这确实是我需要做的。我知道获取对象的这种可能性,但这对我来说是新闻。谢谢

以上是关于PHP:如何将对象转换为继承的类?的主要内容,如果未能解决你的问题,请参考以下文章

如何将我的 .tar.gz 文件转换为 shutil.copyfileobj 的类文件对象?

如何将此对象转换为 PHP 中的数组

将对象转换为存储在变量中的类

当类名已知时,将Object类的java对象动态转换为给定的类

如何将python中的类转换为pandas数据框?

如何将 Class 对象转换为符合协议