PHP新类扩展类实例
我有一个扩展PDO的类: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
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();