Hilfe für APF-Neuling

Hier finden sich Fragen und Ergänzung zur Dokumentation. // All questions and discussions about the documentation.
Antworten
Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Hilfe für APF-Neuling

Beitrag von Screeze » 21.09.2009, 17:50:57

Für eine Erweiterung meiner userSessionManager klasse muss ich beim instanzieren der Klasse konfigurationen laden (aber nur beim ersten mal, denn die configs werden während der session zwischengespeichert und wiederverwendet.)

Ich wollte das ganz normal in einem konstruktor der klasse tun, jedoch steht mir hier offensichtlich der Context noch nicht zur verfügung. Wo könnte ich das denn unterbringen wo der context schon zur verfügung steht?

Benutzeravatar
dr.e.
Administrator
Beiträge: 4605
Registriert: 04.11.2007, 16:13:53

Re: Hilfe für APF-Neuling

Beitrag von dr.e. » 21.09.2009, 20:56:24

Hallo Screeze,
Ich wollte das ganz normal in einem konstruktor der klasse tun, jedoch steht mir hier offensichtlich der Context noch nicht zur verfügung. Wo könnte ich das denn unterbringen wo der context schon zur verfügung steht?
Ich würde hierzu deine Klasse immer mit dem ServiceManager instanziieren. Entweder mit __getAndInitServiceObject(), das hast du die init()-Methode, oder mit __getDIServiceObject(), da kannst du diverse Init-Methoden definieren. In diesen steht jeweils der Context zur Verfügung.
Viele Grüße,
Christian

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Hilfe für APF-Neuling

Beitrag von Screeze » 21.09.2009, 21:29:25

Ach da lag mein Fehler :D
mit init() hab ichs schon versucht, da hatte ich was in erinnerung, aber ich hab natürlich das ..andinit... vergessen ;)

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Hilfe für APF-Neuling

Beitrag von Screeze » 21.09.2009, 21:49:00

Jetzt hab ich aber ein Problem.

bisher hab ichs so instanziert:

Code: Alles auswählen

$uSM = &$this->__getServiceObject('mytools::userSessionManager::biz','userSessionManager','SESSIONSINGLETON');
klappt (in der ursprünglichen version)

jetzt mach ichs so:

Code: Alles auswählen

$uSM = &$this->__getAndInitServiceObject('mytools::userSessionManager::biz','userSessionManager','SESSIONSINGLETON');
Und schon klappts nichtmehr. Die Daten werden nicht in der Session gespeichert.

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: Hilfe für APF-Neuling

Beitrag von Megger » 21.09.2009, 22:12:22

Kurzer Blick in die API Dokumentation

Code: Alles auswählen

__getAndInitServiceObject ($namespace, $serviceName, $initParam, $type= 'SINGLETON')
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Hilfe für APF-Neuling

Beitrag von Screeze » 21.09.2009, 22:19:02

ach mist, oder wie Homer sagen würde *NEIN* ;)
daran hab ich gleich garnicht gedacht, aber dass ich da kein fehler bekommen hab... ;)

Danke dir, ich muss wohl doch noch das ein oder andre vom apf lernen :lol:

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: Hilfe für APF-Neuling

Beitrag von Megger » 21.09.2009, 22:51:14

Ich habe beim Entwickeln eigentlich immer die API Dokumentation und das SVN offen. Sobald irgendetwas nicht funktioniert oder ich mir nicht sicher bin, schaue ich zuerst da nach.

Es kommt kein Fehler, da $type optional ist. Was er dann mit dem SESSIONSINGLETON als initParam macht weiß ich nicht :D
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Hilfe für APF-Neuling

Beitrag von Screeze » 22.09.2009, 12:28:34

ich hab normal auch immer mehrere seiten von der api und der seite auf meinem 2. monitor offen, aber ich war mir (warum auch immer) sicher dass die parameter die selben sind... und es war wohl doch schon zu spät gestern ;)

Megger
Beiträge: 1233
Registriert: 04.11.2008, 10:57:37

Re: Hilfe für APF-Neuling

Beitrag von Megger » 22.09.2009, 12:39:44

Das kenne ich :D Wenn ich mal in der Nacht programmiere bin ich am nächsten Tag damit beschäftigt ein bisschen was anzupassen um den Quellcode wieder leserlich zu machen. In der Nacht fallen einem Abkürzungen ein, da glaubt man gar nicht dran.
Tutorial: Browsergame mit dem APF (Die ersten Parts handeln von Installation und Inbetriebnahme des APFs, deswegen sicherlich auch für alle Nicht-Browsergame-Programmierer interessant)

APF-Version
  • Entwicklung: 2.0
  • Produktiv: 1.15

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Hilfe für APF-Neuling

Beitrag von Screeze » 19.10.2009, 16:55:14

Besteht die möglichkeit, 2 Objekte, die sich in versch. datenbanken (aber auf dem selben server) befinden mit einer beziehung zu belegen? (mit dem GORM)

Ich würde gerne bestimmte Teile in eigene DBs auslagern, wie z.b. den Nachrichtenverkehr der User, Supportanfragen etc. Diese müssen aber trotzdem vom user Objekt komponiert werden.

Andernfalls bleiben wohl nur weitere Stellvertreter Objekte in der jeweiligen datenbank....

Benutzeravatar
dr.e.
Administrator
Beiträge: 4605
Registriert: 04.11.2007, 16:13:53

Re: Hilfe für APF-Neuling

Beitrag von dr.e. » 19.10.2009, 17:21:38

Hi,

hier gibt es (vorerst) keine Möglichkeit, denn die Statements des GORM werden momentan ohne DB-Prefix formuliert. Ich bin mir gerade auch nicht sicher, ob man über Tabellen verschiedener Datenbanken JOINen kann. Sollte das funktionieren, könnte man sich überlegen das zu implementieren. Allerdings ist das Konzept des GORM aktuell nicht dafür nicht ausgelegt, da eine Config nur für eine DB-Connection ausgelegt ist. Es bleibt also nur Stellvertreter-Logik.
Viele Grüße,
Christian

Benutzeravatar
MrNiceGuy
Beiträge: 749
Registriert: 03.02.2009, 16:49:42
Wohnort: Nienburg / Weser

Re: Hilfe für APF-Neuling

Beitrag von MrNiceGuy » 19.10.2009, 19:49:22

Als Kompromiss könnte man ja eine Implementierung vornehmen, die sich auf eine Datenbank-Verbindung bezieht, sprich: Nur Tabellenübergreifend auf dem gleichen Datenbank-Server. Anders wird es wahrscheinlich ohnehin nicht funktionieren (ich wüsste jedenfalls nicht, wie das gehen soll!?).

Ansonsten habe ich gerade lokal mal ausprobiert zwei Tabellen aus verschiedenen Datenbanken miteinander zu verknüpfen:

Code: Alles auswählen

SELECT * 
FROM `test`.`test1` AS `t1` 
LEFT OUTER JOIN `test2`.`test2` AS `t2` ON `t2`.`FID` = `t1`.`ID` 
LIMIT 0 , 30
Funktioniert einwandfrei. Allerdings muss dabei wohl gegeben sein, dass der Benutzer auch Zugriff auf beide Datenbanken hat ;)

Ich denke, dass es durchaus Sinn machen würde, soetwas zu implementieren, da alleine schon das Update-Feature Tabellen entfernt, die zu einer anderen Konfiguration gehören. Man könnte das Durcheinander in der Datenbank (was möglich ist bei mehreren Konfigurationen) deutlich durchschaubarer gestalten - denke ich.

Allerdings sollte man in einer entsprechenden Funktion innerhalb des GORM keine Datenbank mehr zur Benutzung auswählen, sondern immer die jeweilige Datenbank voranhängen, die gerade benutzt werden soll (je nach GORM-Konfiguration), verstehst du, was ich meine?
There are only 10 Types of people in the world:
Those who understand binary and those who don't.

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Hilfe für APF-Neuling

Beitrag von Screeze » 19.10.2009, 20:55:35

Allerdings muss dabei wohl gegeben sein, dass der Benutzer auch Zugriff auf beide Datenbanken hat
das wäre ja kein problem.

und der rest klingt auch logisch.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4605
Registriert: 04.11.2007, 16:13:53

Re: Hilfe für APF-Neuling

Beitrag von dr.e. » 19.10.2009, 22:00:37

Hallo zusammen,

ich schau mir das mal für 1.12 an. Man muss dann nur wirklich vorsichtig sein, dass ein Setup und ein Update auch korrekt funktioniert. Ich möchte jedoch darauf hinweisen, dass mehrere Datenbanken zu verwenden eine deutlich größere Komplexität mit sich bringt, die Performance kostet und Verwaltungs-Overhead bringt.

In meinen bisherigen Projekten war es daher einfacher, über Stellvertreter-Objekte und entsprechende Business-Komponenten für je eine Datenbank zu arbeiten. Das grenzt die Komplexität und den Fehlerbereich stark ein. Und da in deiner Master-Datenbank - Screeze - ohnehin nur wenig Daten gespeichert sind, sollte das per se auch weder ein architekturelles Problem noch einen Performance-Engpass verursachen.

Ich will mich nicht gegen das Feature wehren, nur verletzt das KISS sehr stark und mach den Code unübersichtlicher.
Viele Grüße,
Christian

Benutzeravatar
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: Hilfe für APF-Neuling

Beitrag von Screeze » 19.10.2009, 22:21:26

dass mehrere Datenbanken zu verwenden eine deutlich größere Komplexität mit sich bringt,
ist das jetzt allgemein gemeint, oder nur solange man die datenbanken direkt miteinander verknüpft wie ich überlegt hatte?

ich komme auch ohne das feature aus, so ist das nicht, war nur ne grundüberlegung wie das von der machbarkeit aussieht.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast