Torsten: Objekt einer Klasse prüfen

tachche!

gibt es eine möglich ein Objekt einer Klasse auf Existenz zu überprüfen?

Gruß
Torsten

  1. Hi!

    gibt es eine möglich ein Objekt einer Klasse auf Existenz zu überprüfen?

    Unter Umständen hilft dir die Funktion is_object() weiter. Ansonsten müsstest du uns dein Vorhaben genauer beschreiben und vor allem, was du dadurch zu erreichen versuchst.

    Grüße,
    Fabian St.

    1. Hallo,

      Unter Umständen hilft dir die Funktion is_object() weiter. Ansonsten müsstest du uns dein Vorhaben genauer beschreiben und vor allem, was du dadurch zu erreichen versuchst.

      ich versuche einen Fehler zu analysieren. Das ne ganz komische Sache, auf meinem lokalen Webserver(globals sind off!) ist der Fehler nicht zu beobachten, aber auf dem meines Web-Providers. Bin schon den ganzen Tag am testen, aber ich find und find den Fehler einfach nicht.

      Ist nicht einfach zu erklären, ich Versuchs einfach mal.
      Layout der Seite:
      Links Navigation, rechts Content, jeweils in einer CSS-Box.
      Den Content-Bereich habe ich als Klasse geschrieben, in dieser Klasse wird je nach betätigtem Link-Button in der Navigation das entsprechende Heading(Grafisch) und den dazugehörigen Inhalt im Content-Bereich erzeugt, alles ohne Frames. Dann gibt es in der Navigation einen Button Forum(phpbb), nur für dieses Forum wird in der CSS-Content-Box eine iFrame erzeugt, welches auch in der Klasse ContentBox entschieden wird, für alle anderen Seiten, wie z.b. die News wird keine iFrame erzeugt, hier werden die News mittels include in die CSS-Content-Box eingebunden. Dies konnte ich aber für das phpbb-Forum nicht ohne weiteres machen, deswegen wird speziell nur für das Forum eine iFrame erzeugt.

      Also, in der Klasse ContentBox wird entschieden welcher Inhalt, welches Heading und ob eine iFrame gebraucht wird.

      Mein Problem ist jetzt, nach dem Einloggen ins phpbb-Forum -welches sich ja in einer iFrame befindet, und diese iFrame in einer Klasse- gehen Formatierungen der iFrame verloren, wie z.b srolling="no" wird anscheint nicht mehr berücksichtigt(Scrollbalken sind aufeinmal zu erkennen) und allowtransparency="true" funktioniert auch nicht mehr.

      Dazu ist vielleicht noch zu erwähnen, dass sich die Höhe der iFrame dynamisch des Inhalten anpasst(Javascript). Ich wollte somit die hässlichen Scrollbalken vermeiden.

      Ich bin mir eigentlich ziemlich sicher das es an meiner Implementation meiner Klasse liegt, kann aber den Fehler ums verrecken nicht finden.

      hier der Link zu meiner Seite.
      http://t-hp.de/noClan/logik.php?page=forum/index.php
      Javascript wird allerdings benötigt..

      Ich würde mich über jeden Tipp sehr freuen. Danke

      Gruß
      Torsten

      Gruß
      Torsten

      1. Hallo noch mal,

        ich poste mal am besten den relevanten Code, Code sagt meistens mehr als 1000 Worte ;-)

        die Klasse ContentBox:

          
        <?php  
          class Content_Box  
          {  
            // Instanzvariablen  
            var $current_page; // Aktuelle Seite  
            var $template_dir; // Verzeichnis der Seite  
            var $forum;        // Pfad des Forums (forum/index.php)  
          
            // Konstruktor  
            function Content_box($cp,$td,$fm)  
            {  
              $this->current_page = $cp;  
              $this->template_dir = $td;  
              $this->forum = $fm;  
            }  
          
            function set_heading()  
            {  
              $heading = basename($this->current_page,".php"); //-> page (ohne .php)  
              if($heading == "index") $heading = "forum";  
              return "<div class=\"bg_heading\"><div class=\"$heading\"></div></div>\n";  
            }  
          
            function content_text()  
            {  
              switch($this->current_page)  
              {  
                case "start.php":  
                  /* hier stehen text inhalte, die als  
                     array zurück gegeben werden */  
                  return $arr;  
                break;  
          
                case "news.php";  
                ...  
                break;  
                ...  
              }  
            }  
          
            function set_content($content_text)  
            {  
              if($this->current_page == $this->forum) {  
                return "<iframe src=\"$this->forum\" id=\"myIframe\" name=\"myIframe\" onLoad=\"dynfrm()\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" frameborder=\"0\" style=\"width:710px;margin-bottom:15px\" allowtransparency=\"true\"></iframe>";  
              }  
              else {  
                echo "<div id=\"conback\">";  
                  include($this->template_dir .= $this->current_page); //-> include(templates/page.php);  
                echo "</div>";  
              }  
            }  
          }  
        ?>  
        
        

        Die Instanziierung:

          
        $conbox_obj = new Content_box(CURRENT_PAGE,TEMPLATE_DIR,FORUM_PATH);  
        
        

        Das Layout:

          
            <div id="nav">  
              <div class="menu"><?php menu(); ?></div>  
            </div> <!-- /nav -->  
            <div id="content">  
              <?=$conbox_obj->set_heading()?>  
              <?=$conbox_obj->set_content($conbox_obj->content_text())?>  
            </div> <!-- /content -->  
        
        

        und hier(evtl. nicht so relevant) die dynamische Anpassung des Inhaltes der iFrame:

          
        function dynfrm() {  
          nav_div = document.getElementById("nav");  
          content_div = document.getElementById("content");  
          
          ifrm = document.getElementById('myIframe');  
          cont_ifrm = myIframe.document.getElementById('forumdiv');  
          
          //Höche des Inhaltes/Iframe wird der Höche/Iframe angepasst  
          ifrm.style.height = (cont_ifrm.offsetHeight + 45) + 'px';  
          content_div.style.height = (ifrm.offsetHeight + 88) + "px";  
          
          //Anpassung des Layouts  
          if(ifrm.offsetHeight > nav_div.offsetHeight)  
            nav_div.style.height = (ifrm.offsetHeight + 100) + "px";  
          else  
            nav_div.style.height = (content_div.offsetHeight + 10) + "px";  
        }  
        
        

        vielleicht erkennt ja jemand spontan wo ran es evtl. liegen könnte.
        Über Tipps wie man es evtl. besser machen könnte, würde ich mich natürlich auch sehr freuen.

        PS: Wie man sieht, ich bin kein Profi! Ich mach das nur nebenher, als eine Art Hobby!

        Gruß
        Torsten

        1. Hallo,

          mir ist noch was aufgefallen.
          Mein Webprovider hat eine ältere PHP-Version(4.3.11) als ich auf meinem lokalen Webserver(5.0.3RC2-dev, Apache).

          Das Problem was ich habe, ist nur auf dem Webserver meines Providers erkennbar. Kann es an den unterschiedlichen Versionen liegen?

          Gruß
          Torsten