eternitysoft
Mitglied
Hallo erstmal,
ich habe folgendes Problem.
Ich schreibe momentan Klassen (bin noch bei der ersten) um Daten wie z.B. von Last.fm zu hohlen.
Das sieht momentan so aus:
Klasse
weiter geplant zum Beispiel:
Und so weiter.
So dann habe ich eine Oberklasse die dann dafür da ist die jeweiligen Funktionen aufzurufen, damit im Hauptscript nur eine Klasse eingebunden werden muss.
Diese Klasse sollte nun alias Funktionen haben, die dann über das jeweilige Objekt mit die richtige Funktion aufruft:
Das war mein erster Ansatz.
Mein Problem an der Sache ist, das ja nun die Information der jeweiligen Seiten sehr unterschiedlich sind.
Sprich auf last.fm kann ich Charts auslesen, Künstlerinformationen e.t.c auf Youtube kann ich Channels auslesen, Video hohlen e.t.c, das macht diesen Ansatz ja relativ sinnlos, da ich ja die alias Funktionen ja dann überflüssig sind, aufgrund der verschiedenen Informationen.
(ich müsste ja für jede API-Klasse neue alias Funktionen schreiben = doppelte Arbeit.)
Nun hatte / habe ich noch folgenden Ansatz:
Ich erstelle also über die Klasse also nur ein Objekt der jeweiligen Klasse und habe so den Zugriff auf die jeweiligen Funktionen.
Die Frage ist, ob das so überhaupt eine gute Lösung ist, mir kommt das nicht so vor.
Es soll ja auch wenn es geht einfach sein und einheitlich (umso weniger Funktionen in der Oberklasse umso besser).
Also gibt es da noch andere Ansätze, Möglichkeiten ?
(Ich hoffe, es blickt jemand durch wie das gemeint ist)
mfg
ich habe folgendes Problem.
Ich schreibe momentan Klassen (bin noch bei der ersten) um Daten wie z.B. von Last.fm zu hohlen.
Das sieht momentan so aus:
Klasse
PHP:
class LastFM extends Request implements ApiInterface
{
//Funktionen ....
}
PHP:
class Youtube extends Request implements ApiInterface
{
//Funktionen ....
}
So dann habe ich eine Oberklasse die dann dafür da ist die jeweiligen Funktionen aufzurufen, damit im Hauptscript nur eine Klasse eingebunden werden muss.
PHP:
class API
{
private $ApiObj = NULL;
public function __construct()
{
}
public function selectApi($api)
{
$this->ApiObj = NULL;
$this->ApiObj = new $api;
if(!($this->ApiObj instanceof ApiInterface))
{
trigger_error($api." ist keine gültige Api Klasse.",E_USER_ERROR);
$this->ApiObj = NULL;
}
}
//...
PHP:
//fortsetzung Api
public function getAlbumInfo($artist,$album,$options = array())
{
$data = $this->ApiObj->getAlbumInfo($artist,$album,$options);
return $data;
}
Mein Problem an der Sache ist, das ja nun die Information der jeweiligen Seiten sehr unterschiedlich sind.
Sprich auf last.fm kann ich Charts auslesen, Künstlerinformationen e.t.c auf Youtube kann ich Channels auslesen, Video hohlen e.t.c, das macht diesen Ansatz ja relativ sinnlos, da ich ja die alias Funktionen ja dann überflüssig sind, aufgrund der verschiedenen Informationen.
(ich müsste ja für jede API-Klasse neue alias Funktionen schreiben = doppelte Arbeit.)
Nun hatte / habe ich noch folgenden Ansatz:
PHP:
class MusicApi
{
static private $instance = null;
static public function getInstance($api)
{
if (null === self::$instance[$api])
{
self::$instance[$api] = new $api;
}
return self::$instance[$api];
}
private function __construct(){}
private function __clone(){}
}
Die Frage ist, ob das so überhaupt eine gute Lösung ist, mir kommt das nicht so vor.
Es soll ja auch wenn es geht einfach sein und einheitlich (umso weniger Funktionen in der Oberklasse umso besser).
Also gibt es da noch andere Ansätze, Möglichkeiten ?
(Ich hoffe, es blickt jemand durch wie das gemeint ist)
mfg