PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP] PHP-Klassenproblem



traexx
27.01.2004, 16:45
Ich habe folgende Klassen:


class user_privilegies
{
function set()
{
return "test";
}
}

class user
{
var $id, $b_user, $e_user, $user_priv, $error_msg;

function user()
{
$this->error_msg = "";
$this->b_user = new basic_user;
$this->e_user = new extendet_user;
$this->user_priv = new user_privilegies;
}

function set()
{
return $this->user_priv->set();
}

}



die Klassen basic_user, extendet_user und user_privilegies sind definiert und eingebunden (require_once). Zudem scheinen sie Fehlerfrei.

jedoch greift die Klasse user in ihren Funktionen nicht auf user_privilegies zu, was zu keiner Ausgabe führt, wenn ich mir den Rückgabewert von einer user-Instanz geben lasse:

$u = new user;

echo $u->set();

was läuft falsch? Oder läuft das falsch? ich kann auch den genauen Code posten, aber das ist ziemlich viel XD

ich nutze PHP 4.3.2 unter Apache

imported_scribble
27.01.2004, 17:55
Es dürfte doch an den Klassen basic_user und extended_user ( ;) ) liegen. Wenn ich deren Aufrufe auskommentiere, klappt alles. Probier mal folgendes, damit du siehst, wo das Problem auftritt
function user()
{
$this->error_msg = "";
echo "Basic User anlegen: ";
$this->b_user = new basic_user;
echo "
Extended User anlegen: ";
$this->e_user = new extended_user;
echo "
User Privileges anlegen: ";
$this->user_priv = new user_privilegies;
}Dieses Verfahren, rund um die kritischen Stellen Ausgaben einzubauen, ist übrigens sehr oft hilfreich :)

Bis dann,

scribble

traexx
29.01.2004, 10:13
oki ^^ werde ich testen ^^

aber das verrückte ist ja, das es keinen Skriptabbruch gibt o.O

(die Daten für die Ausgabe werden danach smarty übergeben)

traexx
30.01.2004, 20:53
ich habs versucht -.-

hab ein Testprogramm geschrieben und alle Fehlerquellen ausgemerzt; ABER: user_priv wird als Klasse erkannt, aber die Funktionen werden einfach nicht aufgerufen o.O

also

-------

$u = new user();

$u->create();

echo $u->error_msg;

if (!isset($u->user_priv))
{
echo "error!";
}
else
{
echo "no error!";
};

// ... + erzwungene Ausgabe in u->user_priv->set()

Ausgabe:

no error!

aber keine Ausgabe in den u->user_priv Funktionen, obwohl ich sie sogar erzwinge.

Dabei sind alle Pfade richtig, nichts doppelt eingebunden, alle anderen Klassen sind richtig initialisiert, alleine funktioniert user_privilegies als Klasse auch, keine Schreibfehler, keine Syntaxfehler, Fehlerausgaben sowieso keine, GAR NIX :O