Salut,
Pour schématiser, comme on parle de "panier", voire même "caddie" sur certain sites, alors :
Imagine que tu es dans un magasin et que tu prends un panier par rayon (un rayon représente en fait une galerie sur mon site). Et chacun de tes paniers sont indépendants les uns des autres

Et que par conséquent, tu ne peux pas donner tous tes paniers à une caissière.
Voilà, je pense que c'est beaucoup plus clair là, non ?

Bonne nuit
thehawk a tout à fait raison, une class Singleton est la meilleur solution pour ce que tu veux faire.
Le script ci-dessous en reprend l'idée générale, 'fin c'est pas une Singleton, il s'agit juste de l'idée.
Simple rappel: Une class = un fichier.
C'est juste une piste. J'ai fais quelques essais et que ca marchait mais comme je n'ai fais que "tester"
le principe il est possible qu'il y ait certain problème (il y en aura je te l'assure) mais la... Je te laisse faire
Très peu de commentaires mais en même temps j'ai fais ca pour répondre à ton post... J'ai tenté
de faire ca vite lol
<?php
// J'ai essayé d'être parlant sur les noms et identités employés.
// Ca reste un exemple, pas très beau, pas optimise mais...
// a toi de modifier selon tes besoins
// --------- Partie des class pour l'aggrégation dans FromPannier
/**
* className: Surgeles
* c'est avec ses éléments que tu joues: Quantités, prix etc...
* A toi de créer les fonctions et variables etc...
*/
class Surgeles
{
/**
* Variable inutile, m'a juste servit pour les test.
*/
private $_id = "Surgeles";
}
/**
* className: Frais
* c'est avec ses éléments que tu joues: Quantités, prix etc...
* A toi de créer les fonctions et variables etc...
*/
class Frais
{
/**
* Variable inutile, m'a juste servit pour les test.
*/
private $_id = "Frais";
}
/**
* className: Vidéo
* c'est avec ses éléments que tu joues: Quantités, prix etc...
* A toi de créer les fonctions et variables etc...
*/
class Video
{
/**
* Variable inutile, m'a juste servit pour les test.
*/
private $_id = "Video";
}
// --------- Partie gestion / admin / création: Placés selon ce script en ./aggregs/
/**
* className: MainPannier
* J'ai la fichue habitude de séparer la création de la gestion...
* bref, on s'en fiche, fais ce qui te semble le plus natuel ;)
*/
class MainPannier
{
protected function __construct()
{
}
private function __clone()
{
}
public function __destroy()
{
}
}
/**
* className: FrontPannier
* La class présente te permet la gestion des instances,
* la gestion des aggregs etc...
*/
class FrontPannier extends MainPannier
{
static private $_poolInstance = NULL;
/**
* Point d'aggreg
*/
public $_aggRayon = NULL;
public function init($strName = false)
{
if (!is_string($strName)) die("Nom du pannier invalide !");
if (isset(self::$_poolInstance[$strName])) die("Pannier deja declare !");
/**
* Flag boolean d'erreur
*/
$bfError = false;
/**
* De même j'adore controler les variables d'ou le switch
*/
switch($strName)
{
case surgeles:
break;
case frais:
break;
case video:
break;
default:
$bfError = true;
}
if ($bfError) die("Traitement (aggrégation) impossible, nom invalide, class inéxistante !");
/**
* Chargement eventuel du fichier contenant la class
* considère ca comme un "joke" c'est un exemple à toi de l'inclure d'ou il est placé...
*/
if (!class_exists($strName))
{
if (file_exist("./aggregs/".$strName.".php")) die("Fichier ./aggregs/".$strName.".php introuvable !");
require_once("./aggregs/".$strName.".php");
}
self::$_poolInstance[$strName] = new self;
$inst = self::$_poolInstance[$strName];
/**
* Objet du nom du rayon...
*/
$inst -> _aggRayon = new $strName();
return $inst;
}
public function getInstance($strName = false)
{
if (!is_string($strName)) die("Nom du pannier invalide !");
if (!isset(self::$_poolInstance[$strName])) die("Aucun pannier declare a ce nom !");
/**
* Rend impossible l'appel dans le context présent, l'appel doit être fait
* de manière static
*/
if ($this instanceof FrontPannier) die("Instance reservee, erreur !");
return self::$_poolInstance[$strName];
}
/**
* Retourne un tableau comprenant tous les identifiants (noms) existants.
*/
public function getPool()
{
$arrayList = Array();
foreach(self::$_poolInstance AS $key => $value)
{
array_push($arrayList, $key);
}
return $arrayList;
}
}
?>
Les class sont Inéxploitables telles qu'elles sont, à toi de jouer pour qu'elles le deviennent.
Je te rappel que c'était vraiment juste pour te donner un exemple alors: [*]Pas tappé, pas tappé
Bon code @+
PS: [*] Je deconne, en tout cas j'espere que ca t'aurra fourni une piste.