Gültigkeit von Objekten in fremden Klassen

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

  • Gültigkeit von Objekten in fremden Klassen

    Tag,

    hier mal ein vereinfachtes Modell meines Problems:

    Script 1
    beinhaltet eine Klasse und am Ende des Scripts wird ein Objekt initialisiert, dass die Referenz dieser Klasse trägt. Script 1 dient nur zu Inkludierung und ich will die Klasse so mit ein und demselben Objekt ansteuern un nicht jedes mal neu initialisieren.

    Script 2
    ist eigentlich nicht das Problem, Script 1 wird wie gehabt inkludiert und das Objekt wird im Hauptcode verwendet.

    Script 3
    inkludiert Script 1 ebenfalls aber nicht Script 2 (also schonmal keine Doppelinkludierung). Der einzige Unterschied hierbei ist, dass ich versuche das Objekt mit der Referenz auf die Klasse aus Script 1 anzusprechen, das aber nicht funktioniert. Er kennt die Klasse zwar aber nicht das Objekt, das in Script 1 deklariert wurde.

    Ich glaub nich, dass das was mit include(); zu tun hat sondern eher mit dem Gültigkeitsbereich von Objekten (insofern hätte ich mir die Erklärung im Voraus auch sparen können ).

    btw: wo is eigentlich der Unterschied zwischen require(), require_once() und include() ?

  • #2
    PHP-Code:
    //skript1.php
    class blabla
    {
    }

    $test=&new blabla();

    //skript3.php
    include 'skript1.php';
    $test->einefunktion(); 
    das geht nich?

    code?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      die besagte Klasse aus Script 1:

      PHP-Code:
      class dbquery
      {

      #Klasseneigenschaften
      var $link;
      var 
      $query;
      var 
      $querynum;
      var 
      $queries = array();
      var 
      $ret;


      #Konstruktor
      function dbquery()
          {
          
      $this->querynum 0;
          
      $this->link = @mysql_connect($GLOBALS["host"], $GLOBALS["account"], $GLOBALS["pwd"]);
          
      $db_select  = @mysql_select_db($GLOBALS["db"], $this->link);
          if(
      $GLOBALS["exkl_error"])
              {
              
      $this->link mysql_connect($GLOBALS["host"], $GLOBALS["account"], $GLOBALS["pwd"]);
              
      $db_select  mysql_select_db($GLOBALS["db"], $this->link);
              }
          if(
      $GLOBALS["testmode"])
              {
                  if(
      $this->link != false)
                      {
      $GLOBALS["returnstring"] .=  "<tr><td>connected to mysql-host:</td><td align=\"right\">[<font class=\"ret_succes\">OK</font>]</td></tr>";}
                  else
                      {
      $GLOBALS["returnstring"] .=  "<tr><td>connected to mysql-host:</td><td align=\"right\">[<font class=\"ret_failed\">FAILED</font>]</td></tr>";}
                  if(
      $db_select != false)
                      {
      $GLOBALS["returnstring"] .=  "<tr><td>connection to mysql-db:</td><td align=\"right\">[<font class=\"ret_succes\">OK</font>]</td></tr>";}
                  else
                      {
      $GLOBALS["returnstring"] .=  "<tr><td>connection to mysql-db:</td><td align=\"right\">[<font class=\"ret_failed\">FAILED</font>]</td></tr>";}
              }    
          }

      #Query-Funktion
      function query($query)
          {
          
      $this->query = @mysql_query($query);
              if(
      $GLOBALS["exkl_error"])
              {
              
      $this->query mysql_query($query);
              }
          
      array_push($this->queries$query);
          if(
      $GLOBALS["testmode"])
              {
              if(
      $this->query != false)
                  {
      $GLOBALS["returnstring"] .=  "<tr><td>parsed query #".$this->querynum.":</td><td align=\"right\">[<font class=\"ret_succes\">OK</font>]</td></tr>";}
              else
                  {
      $GLOBALS["returnstring"] .=  "<tr><td>parsed query #".$this->querynum.":</td><td align=\"right\">[<font class=\"ret_failed\">FAILED</font>]</td></tr>";}
              
      $this->quernum++;
              }
          }
          
      ##Ergebnis-Funktion
      function res()
          {
          if(
      $this->query != false)
              {
              if(
      $GLOBALS["mysql_verbose"])
                  {
      $GLOBALS["returnstring"] .= "<tr><td>getting result array of query #".$this->querynum.":</td><td align=\"right\">[<font class=\"ret_succes\">OK</font>]</td></tr>";}
              
      mysql_fetch_assoc($this->query);
              return 
      mysql_fetch_assoc($this->query);;
              }
          else
              {
              if(
      $GLOBALS["mysql_verbose"])
                  {
      $GLOBALS["returnstring"] .= "<tr><td>getting result array of query #".$this->querynum.":</td><td align=\"right\">[<font class=\"ret_failed\">FAILED</font>]</td></tr>";}
              return 
      false;
              }
          }

      ##Zeilen-Funktions
      function rows()
          {
          if(
      $this->query != false)
              {
              if(
      $GLOBALS["mysql_verbose"])
                  {
      $GLOBALS["returnstring"] .= "<tr><td>counting result rows of query #".$this->querynum.":</td><td align=\"right\">[<font class=\"ret_succes\">OK</font>]</td></tr>";}
              return 
      mysql_num_rows($this->query);
              }
          else
              {
              if(
      $GLOBALS["mysql_verbose"])
                  {
      $GLOBALS["returnstring"] .= "<tr><td>counting result rows of query #".$this->querynum.":</td><td align=\"right\">[<font class=\"ret_failed\">FAILED</font>]</td></tr>";}
              return 
      false;
              }
          }

      ##Reset-Funktion
      function reset()
          {
          unset(
      $this->query);
          if(
      $GLOBALS["mysql_verbose"] && empty($this->query))
              {
      $GLOBALS["returnstring"] .= "<tr><td>reset of mysql-action for query #".$this->querynum.":</td><td align=\"right\">[<font class=\"ret_succes\">OK</font>]</td></tr>";}    
          elseif(!empty(
      $this->query) && $GLOBALS["mysql_verbose"])
              {
      $GLOBALS["returnstring"] .= "<tr><td>reset of mysql-action for query #".$this->querynum.":</td><td align=\"right\">[<font class=\"ret_failed\">FAILED</font>]</td></tr>";}
          }

      }
      #MySQL-Klasse Ende

      $dbq = new dbquery(); 
      Und in Script 2:
      PHP-Code:
      include("Script 1.php");
      class 
      neueKlasse
      {

      function 
      neueKlasse{
      $dbq->query("Irgendwas");
      }



      Gibt Fehler aus, weil er das Objekt $dbq nicht kennt aber die Klasse kennt er.

      Kommentar


      • #4
        wie wäre es, ihm das Objekt zu übergeben

        PHP-Code:
        class neueKlasse {
           var 
        $dbq;
           function 
        neueKlasse(&$_dbq) {
              
        $this->dbq=&$_dbq;
              
        $this->dbq->query("Irgendwas");
           }
        }

        // Auruf per
        $dbg = &new dbquery();
        $neueklasse = &new neueKlasse($dbg); 
        TBT

        Die zwei wichtigsten Regeln für eine berufliche Karriere:
        1. Verrate niemals alles was du weißt!


        PHP 2 AllPatrizier II Browsergame

        Kommentar

        Lädt...
        X