Heizer: Objekt vervielfältigt sich

Liebes Forum

Ich habe im Moment das Problem, daß ein Objekt, das ich per Referenz an verschiedene andere Objekte übergebe (und in dem Fehlermeldungen der anderen Objekte gespeichert werden), sich irgendwo "teilt", also nicht mehr als Referenz behandelt wird. Ich bin nun seit ein paar Stunden am suchen, wo das passieren könnte, und dabei ist mir etwas seltsames Aufgefallen.

Wenn ich ein print_r() des Objekts mache, sieht die erste Zeile etwa so aus:

object(reporting)#15 (7) {

Interessieren würde mich, was genau die Zahl hinter dem "#" meint. Denn selbst nachdem ich das erste Objekt einer Klasse erzeuge, ist dieser Wert nicht 1. Ich kann mir das nur so erklären, daß es die Anzahl der Objekte insgesamt (also unabhängig von deren Klasse) ist. Dieser Wert verändert sich für das in Frage stehende Objekt auch innerhalb der Seite, aber ich finde nicht den Punkt, an dem er sich ändert.

Wie dem auch sei würde es mich sehr interessieren, wie ich diese Zahl einzeln ausgeben kann, da die Objekte sehr groß sind, und wenn ich versuche, in Schleifen Objekte zu dumpen, dann stürzt nur wieder alles ab ...

Ich danke euch

Heizer

  1. object(reporting)#15 (7) {

    Dises Augabe bekomme ich von var_dump(), nicht von print_r()

    1. Ich habe die Lösung gefunden. Es lag daran, daß ich das Objekt als teil eines anderen Objekts mit der Session übergeben habe. Ist jetzt erledigt, in dem ich das Objekt einfach auch mit der Session übergebe.

      Ich habe mir zur Analyse diese kleine Funktion geschrieben, die nur den Objektnamen und den Counter ausgibt:

      <?PHP
      function debug_obj($data) {
       if (!is_object($data))
        $dump = "NOT AN OBJECT";
       else {
        ob_start();
        var_dump($data);
        $dump = ob_get_contents();
        ob_end_clean();
        $start = strpos($dump,"(");
        $stop = strpos($dump," ",$start);
        $dump = substr($dump,$start,$stop-$start);
       }
       echo "\n<pre style='border:1px dotted blue'>$dump</pre>\n";
       $debug = debug_backtrace();
       echo "<p><b>".$debug[0]["function"]."()</b> in ".$debug[0]["file"]." on Line <b>".$debug[0]["line"]."</b></p>";
      }
      ?>

      Beispiel:

      (reporting)#2
      debug_obj() in /path/to/file.php on Line 154

      Vielleicht hilft das ja jemandem weiter.