【问题标题】:how to find namespace for an existing instance of a class如何为类的现有实例查找命名空间
【发布时间】:2017-01-10 23:54:04
【问题描述】:

在这个例子中,使用的平台是 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 的一个实例时,我试图找到 $object

【问题讨论】:

    标签: php magento instantiation instance-variables


    【解决方案1】:

    如果或者我错过了什么,您是否尝试过这个简单的方法:

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

    【讨论】:

    • 不(尽管这对其他情况来说是个好主意),但恰恰相反——我没有know$object 的命名空间。我正在尝试这样做:(instanceof Varien_Db_Adapter_Pdo_Mysql)->setDebug(true);
    • @OliverWilliams 好吧,我很困惑你想要得到什么。你有没有对象或者你想检查$this?
    猜你喜欢
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 2011-10-12
    • 2019-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多