En PHP si je crée une méthode singleton pour comme 5 différentes classes de mise en cache (memcache, apc, session, fichier, cookies)Est-il mauvais d'appeler une méthode singleton plusieurs fois encore et encore sur une page en PHP?
J'ai une principale classe de cache qui basiquement itinéraires mon set() et get() méthodes à la classe de mise en cache appropriée. Maintenant, disons que je dois utiliser la session, le cookie, le memcache et le cache de fichiers sur la même page. Ma classe de cache principale devrait alors créer une nouvelle instance 1 fois pour chacun de ces types de cache en utilisant un singleton. Je devrais alors appeler mes méthodes singleton plusieurs fois sur une page, si je devais définir/obtenir 30 appels différents au cache sur une page, il appellerait la méthode singleton plusieurs fois.
Je me demande si c'est une mauvaise pratique ou pas très bon de continuer à appeler mon singleton encore et encore sur une page?
MISE À JOUR
Ci-dessous est un code que j'ai commencé, dans ce que vous pouvez obtenir un meilleur exemple de ce que je suis en train de faire ... Si je devais ajouter quelque chose à memcache 40 fois sur une page, il appellerait la méthode singleton pour la classe YM memcache 40 fois
/**
* Set a key/value to cache system.
*
* @param string type of cache to store with
* @param string|array keys, or array of values
* @param mixed value (if keys is not an array)
* @return void
*/
public function set($type, $keys, $value = FALSE, $options_arr)
{
if (empty($keys))
return FALSE;
if (! is_array($keys))
{
$keys = array($keys => $val);
}
// Pick our Cache system to use
switch ($type) {
case "memcache":
// Cache item to memcache
$this->memcache = Memcache::getInstance();
$this->memcache->get($keys, $value, $options);
break;
case "apc":
// Cache item to APC
$this->apc = APC::getInstance();
$this->apc->get($keys, $value, $options);
break;
case "session":
// Cache item to Sessions
foreach ($keys as $key => $val)
{
// Set the key
$_SESSION[$key] = $val;
}
break;
case "cookie":
// Cache item to Cookie
break;
case "file":
// Cache item to File
break;
}
}
Ouais c'est là où je suis coincé, certaines personnes disent que beaucoup d'objets sont bons mais je ne comprends pas. Actuellement, je crée 1 objet de base de données sur une page et faire toutes les requêtes de 1, tous les objets de session, je tiens à 1 je n'ai pas vraiment appris sur les objets assez pour comprendre pourquoi vous voulez plus de 1 – JasonDavis
comme ce serait mieux peut-être au moins mais je suppose que c'est difficile à dire. Aussi, j'aimerais voir quelles sont les alternatives utilisées par symfony et Zend Framework pour les singletons – JasonDavis
"One object" ou "several objects"?Eh bien, cela dépend de la situation ;-) ;; Pour une connexion à une base de données, vous voulez probablement une et une seule connexion: pas besoin de se connecter au même DB plus d'une fois - ce qui signifie pas besoin de plus d'une instance de votre classe 'Database_Connection' ;; Pour certains "utilisateur" classe, vous pouvez probablement avoir plus d'un utilisateur dans votre application - ce qui signifie que plus d'une instance de 'User' est probablement parfaitement normal. –