Portal > Foren > PHP > PHP-Programmierung > Existiert ein gewisses Objekt im Sichtbarkeitsbereich?
Antwort
 
Themen-Optionen
Alt 05.03.2007, 17:05 Nach oben    #1
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard Existiert ein gewisses Objekt im Sichtbarkeitsbereich?

Hi,
kann man irgendwie relativ schnell herausfinden, ob ein gewisses Objekt bereits existiert oder nicht?

Beispiel: "Datenbank-Objekt"

Existiert schon ein Objekt des gewünschten Typs wird dies verwendet, existiert es nicht, wird ein neues erstellt. Bräuchte man halt so etwas wie object_exists() bzw. eine Verfeinerung von get_defined_vars().
Letzteres könnte man natürlich "wrappen" und die gewünschte Information zurückliefern, aber das scheint mir doch irgendwie etwas umständlich zu sein.

Scheint so etwas nicht zu geben, der Anwendungsbereich ist dabei erst mal Nebensache (ich brauche das nicht zwingend!).

Wenn jemand eine Möglichkeit kennt ... danke.
Grüße, Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.03.2007, 17:16 Nach oben    #2
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 521
Standard

Ich weis net ob du das auch meinst, aber sowas könnte man auch über ein statisches klassenarray realisieren in das alle instanzen der klasse eingetragen werden. also ne art multi-singleton (rofl: multi-single *gg*).
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.03.2007, 17:21 Nach oben    #3
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Ne, ich will (und kann) nicht noch etwas dazuschreiben. Ich bin in Zeile 634 und will wissen, ob irgendwo vorher eine Instanz der Klasse XYZ erstellt wurde, auf die ich theoretisch zugreifen kann. Ist das der Fall will ich auf sie zugreifen, ansonsten muss ich halt ein neues Objekt erstellen.

Jaja, ein Singleton. Ich weiß, aber ich kann hier gerade kein Singleton einbauen, weil das zu viel refactoring wäre.

Wie gesagt, wenn das nicht geht, ist es auch nicht wirklich tragisch!
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.03.2007, 17:35 Nach oben    #4
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 826
Standard

Irgendwie so müsste das hinhauen:

PHP-Code:
function getInstanceVarname($sClassname) {

    foreach(
get_defined_vars() as $sVarname => $mValue)
        if (
$mValue is_a $sClassname)
            return 
$sVarname;
}

// oder:

function getAnExistingInstance($sClassname) {

    foreach(
get_defined_vars() as $sVarname => $mValue)
        if (
$mValue is_a $sClassname)
            return 
$mValue;

Aber da schon klar zu sehen, wie "gepfuscht" diese Herangehensweise wäre. Du schnappst dir hier einfach das nächstbeste Objekt einer Klasse und hast keine Kontrolle, was du da erwischst.

Dann also besser gleich Singletons bauen oder noch besser ganz darauf zu verzichten, Objektbeziehungen nicht über Methoden-Parameter aufzubauen.

Basti
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.03.2007, 17:39 Nach oben    #5
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Zitat:
Zitat von Basti Beitrag anzeigen
Dann also besser gleich Singletons bauen oder noch besser ganz darauf zu verzichten, Objektbeziehungen nicht über Methoden-Parameter aufzubauen.
Sorry, aber ... blabla
Zitat:
Zitat von Ben
Jaja, ein Singleton. Ich weiß, aber ich kann hier gerade kein Singleton einbauen, weil das zu viel refactoring wäre.
Jo, ich lass das nu eh und erstelle ein neues Objekt. Sollte so in Ordnung sein, auch wegen dieser Aussage hier, die ja doch recht einleuchtend ist.
Zitat:
Zitat von Basti Beitrag anzeigen
Du schnappst dir hier einfach das nächstbeste Objekt einer Klasse und hast keine Kontrolle, was du da erwischst.
Thread ist damit von meiner Seite aus beendet.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.03.2007, 17:44 Nach oben    #6
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 826
Standard

Zitat:
Zitat von Ben Beitrag anzeigen
blabla
...deinen zweiten Beitrag hatte ich noch nicht gelesen, als ich meinen geschrieben hab.

Basti
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.03.2007, 05:58 Nach oben    #7
Neuer Benutzer
 
Registriert seit: 31.05.2006
Beiträge: 24
Standard

Wenn es alles in einem Objekt abläuft, erstell nen Property, welches das Objekt hält

PHP-Code:
class abc {
  protected 
$db null;

  
// jede menge coe

  
public function meineFunktion () 
  {
    if (
$db !== null) {
      
$this->db = new meine_datenbank ();
    }
    
$db $this->db;
    
// Noch mehr code
  
}

KingCrunch ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.03.2007, 07:47 Nach oben    #8
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Nein, ist nicht der Fall. Problem ist aber durch eine Neuinstanzierung umgangen worden. Den Grund hat Basti ja genannt
Zitat:
Zitat von Basti
Du schnappst dir hier einfach das nächstbeste Objekt einer Klasse und hast keine Kontrolle, was du da erwischst.
Trotzdem danke ich!
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Herausfinden, wie ein existierendes Objekt heißt Ben PHP-Programmierung 7 08.03.2006 18:34
Klassenname vom HTMLElement Objekt beny_mcde JavaScript und AJAX 3 18.01.2006 15:36
Objekt Array am82 Allgemeine Java-Programmierung 9 12.12.2005 19:01
FileForm Objekt in Oracle Datenbank Riddick Datenbanken 1 12.10.2004 13:38


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:59 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44