Vererbung
kerstel
- php
0 lulu0 Dr. Lecter0 lulu
Hi,
ich habe eine Klasse in PHP geschrieben um mir bestimmte sachen zu vereinfachen. Nun will ich eine Funktion vererben um bestimmte dinge mehrmals wiederzugeben.
Folgenden Code hab ich:
<?
$a="BLA";
require("class.php");
class test extends test2 {
function nochntest($x,$y) {
$this->Print($x,$y,$a);
}
}
$p = new test;
$p->nochntest(10,10); // GEHT NICHT
$p->Print(10,10,$a); // KLAPPT
?>
Es soll hiermit an der stelle x,y der text a ausgeben werden. $a wird aber nicht ausgedruckt. Wenn ich dir Funktion Print direkt aufrufe klappts, warum?
Danke und Gruß
Kerstel
Huhu Kerstel
Es soll hiermit an der stelle x,y der text a ausgeben werden. $a wird aber nicht ausgedruckt. Wenn ich dir Funktion Print direkt aufrufe klappts, warum?
Innerhalb der Funktion nochntest ist $a undefiniert.
Viele Grüße
lulu
Hi
Innerhalb der Funktion nochntest ist $a undefiniert.
Stimmt. Aber ich dachte innerhalb des Scriptes wären alle Variablen verfügbar. Wie mache ich die denn jetzt für die Funktion verfügbar?
Gruß
Kerstel
_Hai_____________________>-<o__________Strand
Stimmt. Aber ich dachte innerhalb des Scriptes wären alle Variablen verfügbar. Wie mache ich die denn jetzt für die Funktion verfügbar?
Da gibt es verschiedene Möglichkeiten.
Z.B. du übergibst den Wert von $a direkt beim Methodenaufruf oder
Du benutzt eine weitere Methode um dem Objekt eine Eigenschaft mit dem Wert $a zuzuweisen. Das muss dann entsprechend vor dem Aufruf von "nochntest" erfolgen.
Dann könntest Du z.B. innerhalb von "nochntest" darauf zugreifen.
Also z.B.
class test
{
var $value;
function init($val)
{
$this->value = $val;
}
function print_it($x,$y)
{
echo "$x,$y ->".$this->value;
}
}
$a ="Hello World";
$o = new test;
$o->init($a);
$o->print_it(12,12);
Gute Nacht
lulu
Hi
function nochntest($x,$y)
{
global $a;
$this->Print($x,$y,$a);
}
Das hier sollte gehen, denke ich :)
Moin
Hi
function nochntest($x,$y)
{
global $a;
$this->Print($x,$y,$a);
}
Das hier sollte gehen, denke ich :)
gehen tut das schon, aber es ist in diesem Zusammenhang (objektorientierung) wenig sinnvoll.
Eine Klasse sollte ja unabhängig von dem sie verwendenden Skript sein. Daher macht eine Werteübergabe per global die Vorteile des OO-Ansatzes wieder zunichte.
Viele Grüße
lulu