Sorry für den undeutlichen Titel, aber ich weiß nicht ganz wie ich es am besten beschreibe.
Konkret geht es um ein Widget welches über telnet Informationen über einen Teamspeakserver ausliest. Diese Informationen werden dann genutzt um eine Art "Infobox" des jeweiligen Servers darzustellen (also welche Channel, welche User etc…)
Jetzt überlege ich wie ich am besten diese Informationen anderweitig nutzen kann.
Also wenn ich nur wissen will wieviele Benutzer momentan online sind zum Beispiel (ohne die Box auszugeben).
und ich möchte quasi nicht, dass das widget den viewfile ausgibt sondern mir nur die $data variable liefert.
Müsste ich die Logik dann in eine Klasse auslagern, welche mir dann die Informationen zurückgibt?
// Edit: Wäre es "legitim" eine public static methode in das Widget zu integrieren? (Also das ich dann mit Teamspeak::getData($ip, $port); meine Daten bekomme
mbi hat recht. Ich würde eine Klasse grob so aufziehen:
TeamSpeak extends CApplicationComponent {
public $ip;
public $port=1234; // default
// evtl. noch weitere Variablen, die z.B. deine offene Telnetconnection beinhalten.
public init() {
// hier könntest du die connection aufbauen
}
public getDataX() {
// hier Daten X holen (evtl. caching einbauen)
}
public getDataY() {
// falls sinnvoll: hier andere Daten holen
}
}
Die bindest du dann einfach in deine Konfiguration ein:
public function __construct($ip, $port = 8767, $queryport = 51234)
{
connect();
setAttributes(); // Serverinfo & GlobalInfo
setChannel(); // Legt für jeden Channel eine Instanz von TeamspeakChannel an und speichert in $this->cannel[];
setPlayer(); // Weist fuer jeden channel die user zu (Will ich noch nach TeamspeachChannel auslagern, aber das ist garnicht so leicht)
}
}
class TeamspeakChannel
{
// Jede menge flags & Constanten
const CODEC_CELP_52 = 0;
//…
public $subchannel; // Array mit instanzen von TeamspeakChannel
public $player; // Array mit Instanzen von Teamspeak Player
// Jede menge Attribute
public $maxusers;
// …
}
class TeamspeakPlayer
{
// User Attribute etc…
}
[/PHP]
Ist dieser Aufbau so sinnvoll?
Ich will das ganze dann als Extionsion benutzen (und releasen - wenns mal fertig ist)
Die Cache Funktion liegt momentan noch beim Widget…