variablen in classen
jOm
- php
0 Till0 sirdan0 fk0 Andreas Lindig0 Jom
hallo,
ich habe 3 classen erstellt
A. ist die hauptklasse (eigenschaften und vars von A)
B. die 2. classe erbt die 1.classe (eigenschaften und vars von A+B)
C. die 3 erbt die 2 classe (eigenschaften und vars von A+B+C)
(PHP version = 4.3)
nun habe ich generell eine frage zu variablen in classen. ich habe immer probleme variablen aus einer anderen classe aus einer methode anzusprechen.
ich habe schon vesucht sie direkt am anfang tu definieren:
Z.B.:
class query
{
var $query, $test, $path;
function eins(){}
function zwei(){}
}
ich kann diese variablen dann später nicht in den anderen klassen mit $this->test ansprechen
was habe ich falsch gemacht??
muß ich bei jeder dieser klassen zu beginn die variblen definieren oder nur bei der haupklasse??
was muß ich tun?
gruß
jOm
Hallo, jOm!
Lies dir mal: "6. Vererbung in PHP und typische Fallen" durch.
http://tut.php-q.net/klassen.html
mfg, Till
Variablen, die Du in der ersten Klasse definierst, existieren auch in allen davon abgeleiteten Klassen.
ich kann diese variablen dann später nicht in den anderen klassen mit $this->test ansprechen
wie kommst du darauf?
wie macht sich das bemerkbar?
wie ist die fehlermeldung?
Hallo jOm,
ich kann diese variablen dann später nicht in den anderen klassen mit $this->test ansprechen
bestimmt 'n kleiner Syntaxfehler. Ich hab mal ein kleines Beispiel gemacht:
<?php
class urviech
{
var $farbe = "gruen";
}
class dino extends urviech
{
var $groesse = "XXL";
function zeige_eigenschaften()
{
echo 'farbe: '.$this->farbe;
echo '<br>';
echo 'groesse: '.$this->groesse;
}
}
$dino = new dino;
$dino->zeige_eigenschaften();
?>
Gruß, Andreas
HALLO,
hab das problem jetzt gefunden.
danke
habe aber noch ein anderes problem:
und zwar definiert ich anfangs eine global variable $temp, und die will ich im constructor printen.
warun geht das nicht ??????
<?php
global $temp;
$temp="../img/";
class query
{
//CONSTRUCTOR query
function query()
{
print $temp;
}
}
$q=new query();
?>
Hallo,
'global $temp;' gehört in die Funktion, in der Du diese Variable verwenden willst. Der Anfang 'global $temp;' ist Quatsch, weil eine Variable automatisch global ist, wenn sie offen deklariert wird, also: $temp = "blah"; In der Funktion ist sie aber nicht bekannt. Mit 'global' machst Du eine Variable aus dem globalen Raum bekannt.
//CONSTRUCTOR query
function query()
{
global $temp;
print $temp;
}
Gruß, Andreas