Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Abhängigkeit von Klassen unmöglich? (https://www.delphipraxis.net/148964-abhaengigkeit-von-klassen-unmoeglich.html)

Matze 11. Mär 2010 12:53


Abhängigkeit von Klassen unmöglich?
 
Hallo,

der folgende Code ist in PHP-Syntax, es handelt sich jedoch um eine allgemeine Aufgabenstellung.
Ich habe eine Klasse "Cache". Im Konstruktor kann ich den Cache aktivieren oder deaktivieren:

Code:
$cache = new cache(true); // aktiviert
$cache = new cache(false); // deaktiviert
Diesen boolschen Wert würde ich gerne aus einer Konfigurationstabelle in der Datenbank auslesen. Die Schwierigkeit ist jedoch, dass ich die Konfigurationsdaten cache, da sich diese nur selten ändern:

Code:
$config_data = $cache->get_data('config');
Das heißt, für die Konfigurationsdaten muss eine Instanz der Cache-Klasse existieren. Allerdings brauche ich zum Erstellen der Instanz wiederum die Konfigurationswerte.

Wie löst man das? :gruebel:

Grüße, Matze

Meflin 11. Mär 2010 12:57

Re: Abhängigkeit von Klassen unmöglich?
 
Ist die Cache-Konfiguration tatsächluch Instanz-spezifisch? Wenn nicht, dann ist das ganz einfach über statische Methoden / Felder lösbar...
http://php.net/manual/de/language.oop5.static.php

Allerdings teilen dann natürlich alle Instanzen von Cache die selbe Konfiguration. Aber ich schätze mal mehr als einen cache gibt es sowieso nicht?

Matze 11. Mär 2010 13:17

Re: Abhängigkeit von Klassen unmöglich?
 
Richtig, es gibt nur eine Instanz, aber ich wüsste nicht, in wie weit mir das helfen soll.

So oder so muss ich dem Cache den Wert aus der (ggf. gecachten) Konfiguration vorgeben.

Phoenix 11. Mär 2010 13:26

Re: Abhängigkeit von Klassen unmöglich?
 
Du kannst jederzeit nach dem Erstellen der Klasse und dem Bemerken der Tatsache dass Du den anderen Konstruktor gebraucht hättest, die neue Klasse ein zweites mal richtig erzeugen und die Werte rüberkopieren und dann den Instanzverweis umbiegen.

Matze 11. Mär 2010 13:32

Re: Abhängigkeit von Klassen unmöglich?
 
Ich glaube, was ich gerne hätte, geht einfach nicht.
Es würde gehen, wenn ich sage, dass die Konfigurationsdaten immer oder nie aus dem Cache kommen. Dann könnte ich danach auch den Konstruktor neu aufrufen mit dem entsprechenden Wert.

Ich hätte es gerne so:

Wert aus der Konfiguration lesen => wenn dort Cache deaktiviert, Konfiguration aus der Datenbank holen, sonst aus dem Cache

rollstuhlfahrer 11. Mär 2010 14:02

Re: Abhängigkeit von Klassen unmöglich?
 
Cache ist doch eine selbst erstellte Klasse. Warum kann diese Klasse sich den Wert zum cachen nicht selbst besorgen? Das würde sie zwar dann jedes mal machen, aber das wird wohl nicht das Problem sein.
Zitat:

Zitat von Matze
Ich hätte es gerne so:

Wert aus der Konfiguration lesen => wenn dort Cache deaktiviert, Konfiguration aus der Datenbank holen, sonst aus dem Cache

Warum nicht? Konfiguration lesen und dann Cache aufbauen/öffnen. Ich würde hier auch bei einer Datenbank es so lösen, dass ich zuerst auslese, ob gecacht werden soll und dann die DB-Verbindung erweitere (also dem Cache-Objekt zuführe).

Bernhard

Meflin 11. Mär 2010 14:04

Re: Abhängigkeit von Klassen unmöglich?
 
Zitat:

Zitat von Matze
Richtig, es gibt nur eine Instanz, aber ich wüsste nicht, in wie weit mir das helfen soll.
So oder so muss ich dem Cache den Wert aus der (ggf. gecachten) Konfiguration vorgeben.

Ich weiß ja nun nicht wie genau dein Cache funktioniert. Ich dachte daran, den Konfigurationsteil eben statisch zu cachen. Dies kannst du ja machen, ohne eine Instanz vom Cache zu haben. Beim Instanzieren kannst du auf diese statischen Werte zurückgreifen. Aber vielleicht verstehe ich auch einfach das Problem nicht ganz...

Matze 11. Mär 2010 14:27

Re: Abhängigkeit von Klassen unmöglich?
 
Zitat:

Zitat von rollstuhlfahrer
Warum nicht? Konfiguration lesen und dann Cache aufbauen/öffnen. Ich würde hier auch bei einer Datenbank es so lösen, dass ich zuerst auslese, ob gecacht werden soll und dann die DB-Verbindung erweitere (also dem Cache-Objekt zuführe).

Sinn der gecachten Konfiguration ist, dass ich keine Datenbankverbindung benötige.
Sonst kann ich die gleich aus der Datenbank auslesen (immer), wenn ich zum Auslesen eine Verbindung brauche.

Phoenix 11. Mär 2010 15:09

Re: Abhängigkeit von Klassen unmöglich?
 
Vielleicht fehlt mir grad ein wenig Hintergrundwissen zu PHP, aber ich dachte, wenn ein PHP-Request durch ist, dann wird der Handler aus Performancegründen entladen und damit sowieso alle Klassen aufgeräumt?
Sowas wir einen Workerprozess der permanent solche Singleton-Instanzen im Speicher hält gibt es doch da gar nicht, oder etwa doch?

Matze 11. Mär 2010 15:31

Re: Abhängigkeit von Klassen unmöglich?
 
Nicht, dass ich wüsste. Aber davon habe ich doch auch gar nichts geschrieben. :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:34 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz