php conteneur de classe: pourquoi tout le monde utilise le plus compliqué de la méthode?

Quand je trouve des scripts php ou regarder des frameworks php, je vois un "registre de classe" ou un "conteneur de classe", qui contient souvent des variables ou d'autres objets en utilisant l' __magic méthode.

Voici un exemple simpliste de ce que je veux dire:

exemple 1:

class container {
 private $objects;
 public function __get($class){
  if(isset($this->objects[$class])){
   return $this->objects[$class];
  }
  return $this->objects[$class] = new $class();
 }
}

l'exemple ci-dessus auront plus de fonctions lors de la création de la classe au lieu de simplement l'appeler, mais pour mon exemple, il devrait être suffisant.
"exemple 1" c'est ce que j'ai surtout le voir dans les scripts téléchargés à partir d'internet, il maintient une seule et unique instance de la classe, maintenant ce que je me pose, c'est que, ne serait-ce pas exemple faire la même chose et d'être plus efficaces:

exemple 2:

class simplecontainer {
 public function __get($class){
  return $this->$class = new $class();
 }
}

Mais je n'ai jamais voir "exemple 2" chez les autres peuples de scripts qui me fait réfléchir à deux fois, avant même de penser à l'utiliser.

J'ai testé conteneur vs simplecontainer aide de plusieurs classes qu'ils contiennent et de la réutilisation de l'ordre de 100000 fois et "exemple 1" ne 0.75 secondes sur ma machine locale, et "exemple 2" il en 0,29 secondes.

qui dois-je utiliser mes scripts? exemple 1 ou 2? et pourquoi?

Ressemble simplecontainer détient un seul objet à la fois.
Je l'ai testé avec 3 objets différents, et qu'il détient tous les 3, ou le fait que j'ai mal compris ce que tu voulais dire?
Peut-être que je suis surplombant sg mais comment voulez-vous référer à ces différents objets?
$container = new simplecontainer(); $container->testclass->test();
ce que vous avez écrit, il n'a pas de sens. C'est ce que j'appelle compliqué et aussi inutile.

OriginalL'auteur Timo Huovinen | 2010-09-15