Hallo,
der Titel ist etwas verwirrend, es geht hier um 2 Konzepte die ich gerne besprechen möchte.
Erstes Konzept ist der Singleton per ID
Sagen wir ich habe eine Tabelle namens "server" und eine entsprechende Klasse namens Server. Da die Instanzen der klasse Server mit allen möglichen Daten über JOINS und auch teilweise SSH von anderen Servern Daten nachläd möchte ich natürlich nicht, dass ein und derselbe Server mehrmals Instanziert werden muss damit die selben Daten nicht wieder und wieder gelesen werden müssen. Das habe ich in etwa so gelöst:
Die Frage ist nun, ob das ein praktisch sinnvolle Möglichkeit ist pro ID nur eine Instanz zuzulassen oder ob es noch andere/bessere Möglichkeiten gibt.
Dann die Frage zu neu erstellten Einträgen in der Tabelle "Server".
Natürlich hat der Controller in der Tabelle selbst nichts zusuchen daher habe ich mir die Erstellung eines Servers eigentlich in etwa so vorgestellt:
Wobei innerhalb der Methode "save" dann geprüft wird, ob es bereits eine ID gibt, wenn ja den alten Datensatz updaten, wenn nein einen neuen erstellen.
So, das sind so meine beiden Gedanken zu den zwei Themen und die besten Möglichkeiten die mir dazu eingefallen sind, allerdings würde ich mich von euch jetzt gerne beschimpfen lassen wie dumm die beiden Ideen doch sind und wie ich es hätte besser machen können
der Titel ist etwas verwirrend, es geht hier um 2 Konzepte die ich gerne besprechen möchte.
Erstes Konzept ist der Singleton per ID
Sagen wir ich habe eine Tabelle namens "server" und eine entsprechende Klasse namens Server. Da die Instanzen der klasse Server mit allen möglichen Daten über JOINS und auch teilweise SSH von anderen Servern Daten nachläd möchte ich natürlich nicht, dass ein und derselbe Server mehrmals Instanziert werden muss damit die selben Daten nicht wieder und wieder gelesen werden müssen. Das habe ich in etwa so gelöst:
PHP-Code:
class Server {
private static $instances = array();
private function __construct($id){
//get all Data usw...
}
public function byId($id){
if(!array_key_exists($id, self::$instances)){
self::$instances[$id] = new self($id);
}
return self::$instances[$id];
}
}
Dann die Frage zu neu erstellten Einträgen in der Tabelle "Server".
Natürlich hat der Controller in der Tabelle selbst nichts zusuchen daher habe ich mir die Erstellung eines Servers eigentlich in etwa so vorgestellt:
PHP-Code:
//Server bekommt eine neue staische Methode namens "new" wodurch eine neue "leere" Instanz erstellt wird.
$server = Server::new();
$server->setIP("xyz");
$server->setIrgendwas("ghj");
$server->save();
So, das sind so meine beiden Gedanken zu den zwei Themen und die besten Möglichkeiten die mir dazu eingefallen sind, allerdings würde ich mich von euch jetzt gerne beschimpfen lassen wie dumm die beiden Ideen doch sind und wie ich es hätte besser machen können
Kommentar