PHP新类扩展类实例

PHP新类扩展类实例,php,inheritance,reflection,pdo,Php,Inheritance,Reflection,Pdo,我有一个扩展PDO的类: class MyPDO extends PDO { } 它有一些辅助方法,如insert()和update()。然而,当在框架之外使用时,我通常可以访问已经初始化的PDO实例 如何实例化MyPDO,使其扩展现有的PDO实例,而不是创建一个新实例 $pdo; # An already existing PDO connection. $myPdo = new MyPDO(); # Creates a new PDO object # I want to creat

我有一个扩展PDO的类:

class MyPDO extends PDO {

}
它有一些辅助方法,如
insert()
update()
。然而,当在框架之外使用时,我通常可以访问已经初始化的
PDO
实例

如何实例化
MyPDO
,使其扩展现有的
PDO
实例,而不是创建一个新实例

$pdo; # An already existing PDO connection.

$myPdo = new MyPDO(); # Creates a new PDO object

# I want to create a new MyPDO which extends $pdo

$myPdo = new MyPDO() + $pdo; # How would I accomplish this? Reflection?

我基本上不想有一个以上的PDO连接,但想要MyPDO的附加功能。这能做到吗?也许是通过反射?

最简单的解决方案是在类中传递$pdo

<?php

    class MyPDO {
        public $pdo;
        public function __construct($pdo) {
           $this->pdo = $pdo;
        }

        // your Methods use in the class $this->pdo->foo
   }
  $myPdo = new MyPDO($pdo);

. 我从来都不喜欢扩展核心数据库驱动程序来创建数据库抽象层。在您的第一个示例中,MyPDO不是PDO的实例,我必须创建_call方法来代理对PDO属性的所有方法调用。第二个示例将无法使用现有PDO实例。
class MyPDO extends PDO {
    public function __construct() {
       parent::__construct();
    }
    #Your additional methodes
}
$pdo = new MyPDO();