PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit funktion


JuliusCaesar
01.07.2009, 17:59:24
hey
irgendwie hab ich grad nen Brett vorm Kopf
ich hoffe ihr könnt mir helfen :O
ich möchte innerhalb einer Funktion eine andere aufrufen
die funktion get_smilies ansich funktioniert
problem ist die funktion get_sel_smilies oder die art wie die funktion get_sel_smilies aufgerufen wird


<?php
//class.php
class inhalt
{
function get_smilies()
{
//verfügbare smilies auslesen
$smily_dir = dir("./img/smilies");

while($eintrag = $smily_dir->read())
{
//1 und 2 Array wert auslassen
if($eintrag == "." or $eintrag == "..")
{
continue;
}
$img_name[] = $eintrag;
}

foreach($img_name as $img)
{
$length = strlen($img);

//dateiname ohne endung
$file_name = substr($img, 0, $length-3);
//smily code,der im nachrichten feld angzeigt wird
$emotion[] = str_replace(".", ":", $file_name);
}


$this->img_name = $img_name;
return($emotion);
}
function get_sel_smilies($uid)
{

//hat der user noch keine smilies ausgewählt
if(empty($sel_smilies['sel_smilies']))
{
//hier soll die funktion get_smilies aufgerufen werden, dies klappt noch nicht
$smily_func = $this->get_smilies();
$emotion = $smily_func->emotion;
}
else
{
........
}
echo "<pre>emotion";
print_r($emotion);
print_r($img_name);
echo "</pre>";
$this->img_name = $img_name;
return($emotion);

}
}

die Funktion wird so aufgerufen

$inhalt = new inhalt($con);
$emotion = $inhalt->get_sel_smilies($id);
$img_name = $inhalt->img_name;

Notice: Trying to get property of non-object in class.inc.php
habt ihr ne ahnung warum er da snicht so mag?
Julius :)

DokuLeseHemmung
01.07.2009, 18:08:02
Ist doch offensichtlich!
$smily_func = $this->get_smilies();
$emotion = $smily_func->emotion;
$this->get_smilies() liefert kein Objekt, sondern ein Array!
Aber benutzt du es wie ein Objekt: $emotion = $smily_func->emotion;
Und das darfst du nicht!
Also Fehlermeldung noch mal aufmerksam lesen.......
Und bitte nicht verstümmeln. Lass doch die Zeilennummern dran.

JuliusCaesar
03.07.2009, 20:00:55
ah da liegt das Problem, d.h ich müsste die Klasse nochmal aufrufen?!
if(empty($sel_smilies['sel_smilies']))
{
$smily_class = new inhalt($con)
$smily_func = $smily_class->get_smilies(); //hier soll nen parse error sein
$emotion = $smily_class->emotion;
}

jetzt hab ich aber nen neues Problem,er meldet mir nen parse error:O
ruf ich die klasse nicht richtig auf?
Parse error: parse error in \tools\class.inc.php on line 761

gruß Julius

Crisps
03.07.2009, 20:12:49
Hier fehlt ein Semikolon:
$smily_class = new inhalt($con)

$smily_class = new inhalt($con);

JuliusCaesar
05.07.2009, 04:09:57
omg :O
danke euch beiden, jetzt funktionierts :)
habs nun so gelöst
if(empty($sel_smilies['sel_smilies']))
{
$smily_class = new inhalt($this->con);
$emotion = $smily_class->get_smilies();
$img_name = $smily_class->img_name;
}