2016-09-02 32 views
0

在这个例子中,使用的平台是Magento,但我相信这是一个与面向对象编程相关的通用问题。如何找到类的现有实例的名称空间

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

例如,我在Praxis_Rest_ProductsController::getAction()类我的工作,并希望这样做:

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

我知道肯定是连接类是Varien_Db_Adapter_Pdo_Mysql并且这已经实例化,只有一次。

我该怎么做?这可能吗?

- 编辑 - 下面 @Andrej Ludinovskov发布了一个很好的解决方案,如果我知道对象名称,但对我来说,我在现场,其中有没有关系过于它的编码。事实上,它可能是堆栈下游的7-10个不同类,其中实例化对象被调用;但是我确实知道这个类已经被实例化,并且只有一次。在这种情况下,我试图找到$对象时,我所知道的是,它的Varien_Db_Adapter_Pdo_Mysql

回答

0

的情况下你试试这个简单,如果还是我错过的东西:

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

否(虽然这是一个很好的其他情况下的想法),它恰恰相反 - 我不知道'$ object'的命名空间。我试图这样做:'(instanceof Varien_Db_Adapter_Pdo_Mysql) - > setDebug(true);' –

+0

@OliverWilliams嗯,我很困惑你想得到什么。你有没有对象或者你想检查$这个? –

相关问题