Objekte.. schnelle frage.

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Objekte.. schnelle frage.

    gibt es eine möglichkeit innerhalb der konstruktor-methode oder einer anderen klassen-methode den namen des aktuellen objekts zu ermitteln:

    oder in programmier-deutsch:

    PHP-Code:

    class test
      
    {
      
       function 
    test()
         {
         echo 
    "mein objektname ist ".gesuchte_funktion();
         }

       }


    $unklar = new test(); 
    nach ausführen des codes sollte dann:

    mein objektname ist unklar
    erscheinen. der grund der frage ist natürlich wesentlich sinnvoller als das beispiel und ja ich weiss, dass ich dies per parameter ganz einfach hinbekommen könnte. trotzdem

  • #2
    afaik nein.

    Kommentar


    • #3
      habs mir schon fast gedacht.. nen direkten befehl hätt ich wohl in der doku gefunden.

      schön fänd ich ja ein

      PHP-Code:
      echo varname($this); 


      nunja, danke für antwort.
      Zuletzt geändert von metalhos; 27.11.2005, 02:02.

      Kommentar


      • #4
        es gibt nen direkten Befehl ^^


        string get_class ( object obj)

        www.php.net/get_class

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Er möchte aber den Namen der Variable und nich den der Klasse



          Grüße

          Kommentar


          • #6
            falsch. lies dir mal seinen eingangspost noch einmal durch. ;-)
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              korrekt, der name der variable, die mit der klasse instanziert wurde, wird gesucht

              Kommentar


              • #8
                So eine Funktion bringt PHP tatsächlich nicht mit, aber man kann sie sich selber zimmern.
                PHP-Code:
                <?php

                function gesuchte_funktion($classname) {
                    
                ob_start();
                    
                print_r($GLOBALS);
                    
                $vars ob_get_clean();
                    
                preg_match("/\[(.*)\] => $classname Object/"$vars$matches = array());
                    return 
                $matches[1];
                }

                class 
                test {
                    function 
                test() {
                        
                // gesuchte_funktion() funktioniert nicht im Konstruktor,
                        // das Object scheint hier noch nicht fertig zu sein :(
                        
                echo $this->speakInstanceName();
                    }
                    function 
                speakInstanceName() {
                        echo 
                'mein objektname ist '.gesuchte_funktion(get_class($this)).'<br />';
                    }
                }
                $unklar = new test(); // klappt nicht
                $unklar->speakInstanceName(); // klappt

                ?>

                Kommentar


                • #9
                  Also bei mir kommt da

                  mein objektname ist
                  mein objektname ist

                  raus.....
                  gruss Chris

                  [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                  Kommentar


                  • #10
                    Bei mir

                    mein objektname ist
                    mein objektname ist unklar

                    Vielleicht weil die Ausgabe von print_r() bei deiner PHP-Version anders formatiert ist? Eigentlich auch eher als proof of concept gedacht. Denn es hat so wie es ist einen großen Nachteil:
                    PHP-Code:
                    $unklar = new test(); // klappt nicht
                    $unklar->speakInstanceName(); // klappt

                    // Achtung: Hat man mehrere Objekte, ...
                    $unbekannt = new test();
                    // ... muß man sich etwas einfallen lassen!
                    $unbekannt->speakInstanceName(); 
                    liefert (bei mir, *sic*)

                    mein objektname ist
                    mein objektname ist unklar
                    mein objektname ist unklar
                    mein objektname ist unklar

                    Fällt da jemandem was ein?
                    Ich meine mit preg_match_all() bekommt man leicht alle Instanzen, aber woran unterscheidet man nun die eine von der anderen?

                    Kommentar


                    • #11
                      dumme Frage: Wozu sollte man das brauchen? *sich keinen nützlichen Verwendungszweck vorstellen kann*

                      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                      Wie man Fragen richtig stellt

                      Kommentar


                      • #12
                        OffTopic:

                        Kann ich auch nicht. Wollte nur meinen Senf abgeben

                        gruss Chris

                        [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                        Kommentar

                        Lädt...
                        X