如何查找类的现有实例的名称空间



在这个例子中,使用的平台是Magento,但我相信这是一个与面向对象编程相关的通用问题。

当调用页面或API URL时,要实例化的第一个类将实例化其他类,依此类推。我需要从另一个类中更改一个类的实例(只会有一个实例)中的设置。

例如,我在Praxis_Rest_ProductsController::getAction()类工作,想这样做:

(existing instance of Varien_Db_Adapter_Pdo_Mysql)->setDebug(true);

我知道连接类是Varien_Db_Adapter_Pdo_Mysql,并且已经实例化了,而且只实例化了一次。

我该怎么做?这可能吗?

——EDIT——@Andrej Ludinovskov在下面发布了一个很好的解决方案,如果我知道对象的名称,但在我的情况下,我在编码的一个点,这与它没有关系。实际上,在调用实例化对象的堆栈下游可能有7-10个不同的类;但是我知道这个类被实例化了,而且只实例化了一次。在这种情况下,我试图找到$object时,我所知道的是它是Varien_Db_Adapter_Pdo_Mysql

的一个实例

你有没有试过这个简单的如果或者我错过了什么:

if ($object instanceof Varien_Db_Adapter_Pdo_Mysql) {
    $object->setDebug(true);
}

最新更新