Ich habe eine Klasse für die Interaktion mit einem Memcache-Server. Ich habe verschiedene Funktionen zum Einfügen, Löschen und Abrufen von Daten. Ursprünglich machte jede Funktion einen Aufruf an memcache_connect()
Das war jedoch unnötig, z.B.:
mc->insert()
mc->get()
mc->delete()
würde drei Memcache-Verbindungen herstellen. Ich habe dies durch die Erstellung eines Konstrukts für die Klasse umgangen:
function __construct() {
$this->mem = memcache_connect( ... );
}
und dann mit $this->mem
wo immer die Ressource benötigt wurde, so dass jede der drei Funktionen dieselbe memcache_connect
Ressource.
Das ist in Ordnung, aber wenn ich die Klasse innerhalb anderer Klassen aufrufe, z.B.:
class abc
{
function __construct() {
$this->mc = new cache_class;
}
}
class def
{
function __construct() {
$this->mc = new cache_class;
}
}
dann macht es immer noch zwei memcache_connect
Anrufe, wenn sie nur braucht ein.
Ich kann dies mit Globals tun, aber ich würde es vorziehen, sie nicht zu verwenden, wenn ich es nicht muss.
Beispiel für die Implementierung von Globals:
$resource = memcache_connect( ... );
class cache_class
{
function insert() {
global $resource;
memcache_set( $resource , ... );
}
function get() {
global $resource;
return memcache_get( $resource , ... );
}
}
Unabhängig davon, wie oft die Klasse aufgerufen wird, gibt es dann nur einen Aufruf an memcache_connect
.
Gibt es eine Möglichkeit, dies zu tun, oder sollte ich nur Globals verwenden?