Vererbung von Attributen

sasfed

Mitglied
Hallo zusammen,

ich programmiere zur Zeit ein kleines CMS für Fussballvereine und jetzt wurde der Wunsch nach Mehrsprachigkeit an mich herangetragen.
Ich habe mich im Web schlau gemacht und bin jetzt zu folgender Lösung gekommen:

Texte und Spalten von Tabellen werde in einer Tabelle language abgespeichert. Am Anfang meiner Index überprüfe ich, in welcher Sprache die Seite ausgeführt werden soll.
Je nachdem, wird z.B. die language.en.php aufgerufen. In dieser wird eine Methode der Klasse Language aufgerufen, welche das Assoziative-Array public $language mit den englischen Übersetzungen auffüllt.

Sämtliche andere Klassen werden nun von dieser Klasse Language abgeleitet. Demzufolge können alle Klassen auf dieses Attribut zugreifen. Mein Platzhalter lautet wie folgt:

PHP:
$this->language["news_header"]
.

Dieser Platzhalter gibt z.B. "news_header_en" zurück, also die Spalte mit dem englischen Newsheader. Leider funktioniert dies aber nicht. Ich bekomme keine Fehlermeldung sondern einfach nichts. Es folgen die Codefragmente:

Die Klasse Language

PHP:
class Language{
	public $language;
	
	function getLanguageArray($get){
		$sql="SELECT $get, lang_de FROM language";
		$query=mysql_query($sql);
		while($result=mysql_fetch_assoc($query)){;
			$this->language[$result["lang_de"]]=$result[$get];
		}
	}
}

Die c_news.php, mit der Klasse News

PHP:
   class News extends Language{


      function getNews($order,$page,$id,$archiv,$year){
        $start=($page*$this->epp)-$this->epp;
        $header=$this->language["header_news"];
        .......

Habt ihr eine Idee, wo mein Problem liegen könnte? Interessant ist folgendes: wenn ich public $language direkt befülle, bekomme ich in der getNews auch einen Wert. Die Übergabe klappt also. Die $language wird in der Methode getLanguageArray auch richtig befüllt. Wenn ich nämlich innerhalb der Methode einen Wert ausgeb, funktioniert es.

Im Voraus vielen Dank für eure Mithilfe.

Viele Grüße
Sascha
 
Initiierst du die Eltern Klasse denn überhaupt?
Denn die Methode wird nicht automatisch durchlaufen.
 
Ja, mach ich.

In der index.php habe ich ganz am Anfang folgenden Code:

PHP:
  $_language = new Language();
   switch($_SESSION["language"]){
   		case 'de':
   			include("aseg/language/language.de.php");
   		break;
   		case 'en':
   			include("aseg/language/language.en.php");
   		break;
   		default:
   			include("aseg/language/language.de.php");
   		break;
   }
  //Objekt mit den Systeminformationen
  $_config = new Config();
  //Objekt für die News
  $_news = new News();

Und in der language.en.php habe ich dann den Aufruf der Methode:

PHP:
$_language -> getLanguageArray("lang_en");
 
Alles klar, danke für die Hilfe. Hast du vielleicht eine Idee, wie ich das alternativ lösen könnte?

Schöne Grüße
Sascha
 
Zurück