Objektübergabe bei include()

Comander_Keen

Erfahrenes Mitglied
Hallo zusammen,

ich habe mich gerade mit dem Tutorial zur mySQl-Klasse beschäftingt. Mit einer abgespeckten Version bin ich doch leider auf ein, für mich, ziemlich großes Problem gestossen. Wenn ich in meiner index.php ein Objekt erstelle:

PHP:
<?php 
	include('classes/mysql.php'); 
	$test = new iMysql();
	$test->_connect();
?>

kann ich in einer includeten Datei nicht darauf zu greifen.

PHP:
				$test->_query('SELECT count(*) FROM city');
				$result = $test->_fetch_row();

Ich hoffe sehr, dass es dafür eine Lösung gibt. Für andere Wege bin ich natürlich auch offen.

-keen!
 
Also in meiner index erstelle ich das Objekt. Da ich aber nicht bei jedem Query ein neues Objekt erstellen will, rufe ich in den includedten Dateien das Objekt aus der Index wieder auf. Leider kommt dann bei mir dieser Fehler:

Fatal error: Call to a member function on a non-object in

->ergo, er kennt das Objekt nicht.

PS: Die Erstellung erfolgt im Kopf der Index. Also weit vor dem aufruf.
 
Hast du evtl. aus Faulheit die Variable Test nochmal irgendwo so ganz automatisch genutzt ? Spricht wird sie, nachdem du ein Objekt in $test erzeugst, evtl. überschrieben ?
 
@ Tim: Nein das habe ich nicht. Dieses Projekt hier steckt noch in den Kinderschuhen. Bis jetzte kommt die index nicht über 10Zeilen php-code -> ist also sehr überschaubar.

@ Rest: Tja, also ich arbeite das erste mal nach diesem Prinzip, und hab deshalb zu diesem Thema kein Vorwissen oder "Problemideen". Aus euren Posts lese ich jedoch eine Art Selbstverständlichkeit. Wenn dies nicht funktionieren sollte, muss ich in jeder includeten Datei ein einzelnes Objekt erzeugen ( was dann aber nur eine schlechte Notlöung darstellen würde ).
Bin also immer noch offen für Ideen und Ratschläge *appell* ;) !

-keen!
 
Also du meinst ob ich in einer Methode der Klasse auf das Objekt der Klasse zu greife? Durch zB.

PHP:
class mysql {
           function blub(){    
                       $variable = $test->blub2();
                       return $variable;
          }
}

Dann kann ich deine Frage mit nein beantworten. Wenns es nicht deine Frage war, stell sie bitte noch mal in anderer Form :)

-keen!
 
Ich meinte, ob Du innerhalb einer Funktion auf das erstellte Objekt zugreifst.
Bsp.:
PHP:
// Das hier soll die includete Datei darstellen

function meinefunktion() {

  $test->_query('SELECT count(*) FROM city'); 
  $result = $test->_fetch_row();

}
 
Ähm, ist mir erst gerade aufgefallen.. ich greife in einer Methode einer anderen Klasse darauf zu. Ist sicherlich nicht so clever :/ .. gibt es Möglichkeiten beim erstellen einer Klasse Objekte anderen Klassen (die schon existieren) zu deklarieren?

-keen!
 
Zuletzt bearbeitet:
Mmm, kann gut sein, dass ich das jetzt grade mißverstehe, aber evtl. hilft dir der Hinweis etwas, dass man über

Klasse::Methode()

jederzeit und überall ohne Objekt instanzierung Methoden von Klassen aufrufen kann ?

Wenn nicht, ignorier die Antwort einfach ;)
 
Zurück