Hilfe bei Klasse!

Kalma

Erfahrenes Mitglied
Hey,

ich habe eine Klasse für alle Newseinträge, und in der Klasse befindet sich eine Funktion Autor(), die den jeweiligen User per ID rausfindet.

Ich habe, da ich diese Funktion öfter brauchen werde eine extra Funktion angelegt, die dann includet wird:

PHP:
class News
{
...
...
		function Autor()
		{
			include 'include/function/GetAutor.fns.php';

			$autor = getAutor();
			return $autor;

			$this->Titel();
		}
...
...
}

Die Funktion für die Autor Funktion sieht so aus
PHP:
	function getAutor()
	{
		$autor_name		= 'Hallo';

		return $autor_name;
	}

Aber schon da scheiterts. Bei mir zeigt xampp (unter Linux) keine Fehlermeldungen mehr an, also erscheint einfach gar nix. Weißer Bildschirm.
Weiß jemand warum?
 
PHP:
			$news	= new News($id, $autor, $titel, $text, $datum);

			$select['autor']	= $news->Autor();
			$select['titel']	= $news->Titel();
			#$select['text']	= $news->Text();
			$select['datum']	= $news->Datum();

			$inhalt[] = $select;
			$i++;
 
Ich nutze Smarty,

die ganze index.php sieht so aus.

PHP:
	// Query
	$query	=	'SELECT
					*
				FROM
					news
				ORDER BY
					`news_id`
				DESC';
	$result	=	mysql_query($query) or die(mysql_error());

	include $Class_Dir.'/News.class.php';
	$inhalt =	array();
	$i		=	1;
	while($select = mysql_fetch_assoc($result))
	{
		// Auslesen
		$id			= $select['news_id'];
		$autor		= $select['news_autor'];
		$titel		= $select['news_titel'];
		$text		= $select['news_text'];
		$datum		= $select['news_datum'];
		$published	= $select['news_published'];

		// News anzeigen?
		if($published < time()) {
			$news	= new News($id, $autor, $titel, $text, $datum);

			$select['autor']	= $news->Autor();
			$select['titel']	= $news->Titel();
			#$select['text']	= $news->Text();
			$select['datum']	= $news->Datum();

			$inhalt[] = $select;
			$i++;
		}
	}
	$tpl->assign('news_content', $inhalt);

	$tpl->display($Template_Dir.'/index.tpl');

Aber er gibt keine Fehlermeldung aus, sondern nur nen weißen Bildschirm
 
Weder in den Methode Autor() der Klasse News, weder in der Funktion getAuthor() befindet sich ein echo, print oder ähnliches zur Ausgabe.

Sollte sich in der Methode news::Titel() (die du nicht gepastet hast) eine Ausgabe befinden, wird diese nicht über die Methode Autor() aufgerufen ($this->title();) da vorher schon ein RETURN steht und damit die Methode "beendet" wird.

Zum anderen, wenn du die Funktion getAutor() des öfteren brauchst, warum bindest du diese nicht als Methode in die Klasse news ein?
Wenn diese als public definiert wird und nicht abhängig ist von Klasseninstanz varaiablen (z.b. zu lösen durch Argumentenaufruf), wäre die Methode auch als Funktion ausserhalb der klasse aufrufbar, durch news::getAutor();

Edit: Oh da war ich wohl zu langsam :P
 
Zum anderen, wenn du die Funktion getAutor() des öfteren brauchst, warum bindest du diese nicht als Methode in die Klasse news ein?
Wenn diese als public definiert wird und nicht abhängig ist von Klasseninstanz varaiablen (z.b. zu lösen durch Argumentenaufruf), wäre die Methode auch als Funktion ausserhalb der klasse aufrufbar, durch news::getAutor();


Hab ich noch nie gemacht, wie gehtn das?
Weil die BBCode Funktion t auch nicht:

PHP:
		function Text()
		{
			include 'include/function/BBCode.fns.php';

			$text	= $this->text;
			return $text;

			$this->Datum();
		}
 
PHP:
<?php
	class News
	{
		var $id;
		var $autor;
		var $titel;
		var $text;
		var $datum;

		function News($id, $autor, $titel, $text, $datum)
		{
			$this->id		= $id;
			$this->autor	= $autor;
			$this->titel	= $titel;
			$this->text		= $text;
			$this->datum	= $datum;

			$this->Autor();
		}

		function Autor()
		{
			include 'include/function/GetAutor.fns.php';

			$autor = getAutor();
			return $autor;

			$this->Titel();
		}

		function Titel()
		{
			if(empty($this->titel)) {
				$titel = 'der Titel ist leider verloren gegangen :(';
			} else {
				$titel = $this->titel;
			}

			return $titel;

			$this->Text();
		}

		function Text()
		{
			include 'include/function/BBCode.fns.php';

			$text	= $this->text;
			return $text;

			$this->Datum();
		}

		function Datum()
		{
			if(empty($this->datum)) {
				$datum = '(verloren gegangenes Datum)';
			} else {
				$datum = date('d.m.Y H:i', $this->datum);
			}

			return $datum;
		}
	}
?>
 
Zurück