2016-09-02 2 views
0

In diesem Beispiel ist die verwendete Plattform Magento, aber ich glaube, das ist eine allgemeine Frage im Zusammenhang mit objektorientierter Programmierung.Wie finde ich Namespace für eine vorhandene Instanz einer Klasse

Wenn eine Seite oder API-URL aufgerufen wird, instanziiert die erste Klasse, die instanziiert werden soll, dann andere Klassen und usw.. Ich muss eine Einstellung in einer Instanz einer Klasse ändern (es wird nur eine Instanz geben) innerhalb einer anderen Klasse.

Zum Beispiel arbeite ich in der Klasse Praxis_Rest_ProductsController::getAction() und dies tun will:

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

weiß ich sicher, dass die Verbindung Klasse Varien_Db_Adapter_Pdo_Mysql ist und dass dies bereits instanziert wird, und nur ein einziges Mal.

Wie mache ich das? Ist das möglich?

- EDIT - @Andrej Ludinovskov posted unten eine große Lösung, wenn ich den Objektnamen kennen , aber in meinem Fall, ich bin in einem Ort in der Codierung, die keine Beziehung es zu hat. In der Tat könnte es 7 bis 10 verschiedene Klassen in dem Stapel stromabwärts sein, wo das instanziierte Objekt aufgerufen wird; aber ich weiß, dass diese Klasse instanziiert wurde und nur einmal für diese Angelegenheit. In diesem Fall versuche ich $ Objekt zu finden, wenn alles, was ich weiß ist, dass es eine Instanz von Varien_Db_Adapter_Pdo_Mysql

Antwort

0

ist Versuchen Sie diesen einfach, wenn oder ich etwas vermissen:

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

Nein (obwohl dies eine gut Idee für andere Fälle), es ist genau das Gegenteil - ich kenne den Namensraum von $ object nicht. Ich versuche das zu tun: '(instanceof Varien_Db_Adapter_Pdo_Mysql) -> setDebug (true);' –

+0

@OliverWilliams Nun, ich bin verwirrt, was du bekommen willst. Hast du ein Objekt oder nicht oder willst du $ das überprüfen? –

Verwandte Themen