Aufruf einer Klasse innerhalb eines weiteren PHP-Files

Ghostwarrior

Grünschnabel
Hallo Leute,

habe da mal eine Frage. Ich möchte ein PHP-File in einem andern einbinden und auf die darin befindlichen Klassen zugreifen. Wenn ich dies aber include(Pfad) realisiere, bekomme ich beim Zugriff auf die Klasse, die Fehlermeldung, dass die Variable unerwartet kommt. Kann mir hier jemand von euch eine Lösung sagen? Muss ich hier eine neue Klasse erzeugen und die Funktionalitäten über extends einbinden?

Gruß
 
Die genaue Fehlermeldung wäre interessant und auch der Quelltext.

Der Fehler deutet eigentlich darauf hin, dass in der zu inkludierenden Datei ein Syntaxfehler ist.
 
Hi,

danke für die schnelle Antwort.

Fehlermeldung ist folgende:

"Notice: Undefined variable: signatures in /homepages/33/d13440106/htdocs/kljbaltheim/bis/system/templates/startsite/content_startsite.php on line 106"

Source der Datei conten_startsite sieht so aus. Hier habe ich versucht die Klasse der anderen Datei aufzurufen.

Code:
include($_SERVER["DOCUMENT_ROOT"]."/bis/system/dao/SignatureDAO_new.class.php");

class signatures_content
                        extends signatures{
                        /**
                         * Constructor.
                         *
                         * @return Signatures
                        */
                                   function signatures_content(){
                                               parent::signatures();
                                   }
                        }

Die Datei, in der die Klasse definiert wird:
Code:
            include($_SERVER["DOCUMENT_ROOT"]."/bis/system/dao/MySQLDAO.class.php");
            /*Klasse der Signaturen*/
            class signatures
            extends MySQLDAO{
                        /**
                         * Constructor.
                         *
                         * @return SignaturesDAO
                         */
                        function SignaturesDAO(){
                                   parent::MySQLDAO();
                        }
                                   
                        /**
                         * ermittelt alle möglichen Signaturen aus der Tabelle...
                         * 
                         * @return Liste der Signaturen in Signatur-Objekte gekapselt
                         */
                        function retrieveSignatures(){
                                   $result = mysql_query("SELECT * FROM bis_signaturen", $this->link);
                                   
                                   while ($row = mysql_fetch_array($result))
                                   {
                                               //$signatures[] = $row;
                                               array_push($signatures, new signatures($row->signatur, $row->systematik, $row->bez, $row->BereichID));                            
                                   }
                                   
                                   mysql_free_result($result);
                                   
                                   /*Funktion wird bei neuer Instanzierung einer Signatur mit Übergabeparameter aufgerufen*/
                                   function signatures($sig, $sys, $desc, $cat) {
                                               $this->signature = $sig;
                                               $this->systematic = $sys;
                                               $this->sigDesc = $desc;
                                               $this->categoryID = $cat;
                                   }
                                   
                                   return $signatures;
                        }
                        
            }

Gruß
Ghostwarrior
 
Was genau steht denn in der angegebenen Zeile in der angegebenen Datei? Die Fehlermeldung deutet ja eher darauf hin, dass auf eine nicht deklarierte Variable ein Lesezugriff geschieht.
 
Habe auch schon anstatt der Variable $signatures_content die Variable $signatures verwendet. Hier kam die selbe Fehlermeldung. Also, er findet weder $signatures_content noch $signatures. $signatures ist der Returnwert aus der Aufgerufenen Klasse des anderen PHP-Files. Deshalb sollte er dann doch die $signature kennen oder versteh ich da etwas Grundlegendes falsch?
 
Zeig dann doch mal die Zeilen 100–110 der Fehlermeldung genannten Datei. Dort irgendwo muss es ein Vorkommen der Variable $signatures geben, die noch keinen Wert hat.
 
Hi,

hier nun der komplette Code des Files, in das die Klasse eingelesen wird. Das andere File "SignatureDAO_new.class.php" habe ich schon eingestellt.

Code:
include($_SERVER["DOCUMENT_ROOT"]."/bis/system/dao/SignatureDAO_new.class.php");
            //$sqlstr = "SELECT * FROM `bis_signaturen`";
            class signatures_content
                   extends signatures{
                    /**
                    * Constructor.
                    *
                    * @return Signatures
                    */
                            function signatures(){
                                  parent::signatures();
                             }
                     } 
            
                     echo '<div class="startseite_boxen">';
                      echo '<p>Bitte w&auml;hlen Sie Ihre gew&uuml;nschte signaturegruppe!</p>';               
                       echo '<form method="post" name="form" action="templates/startsite/select_signaturee.php">';
                        echo '<select class="startseite_ausgabe" name="signatures" size="13">';
                          echo '<optgroup label="Signaturgruppen (Systematik)">';
                           for($i=0; $i<count($signatures); $i++) {
                             $uebergabevalue = $signatures[$i]->signature .'_'. $signatures[$i]->systematic;
                             echo '<option value="'. $uebergabevalue .'">'. $signatures[$i]->signature .' ('. $signatures[$i]->systematic .')</option>';
                              }
                              echo '</optgroup>';
                              echo '</select>';
                          echo '<br />';
                     echo '<p><input type="submit" value="Signaturgruppe w&auml;hlen" /></p>';
                  echo '</form>';
             echo '</div>';
 
Zuletzt bearbeitet:
Zurück