2010-10-08 3 views
3

J'ai une classe php pour laquelle je crée plusieurs instances. J'aimerais connaître le nombre de fois que j'ai créé cet objet.Nombre de fois qu'une classe PHP est créée

<?php 
    class myObject { 
     //do stuff 
    } 

    $object1 = new myObject; 
    $object2 = new myObject; 
    $object3 = new myObject; 
?> 

Y at-il un moyen de trouver que j'ai créé 3 myObjects?

+1

y compris les instances clonées? – Gordon

Répondre

23

Vous pouvez créer un compteur static et l'incrémenter chaque fois que votre constructor est appelée.

<?php 
class BaseClass { 
    public static $counter = 0; 

    function __construct() { 
     self::$counter++; 
    } 
} 

new BaseClass(); 
new BaseClass(); 
new BaseClass(); 

echo BaseClass::$counter; 
?> 

This code on ideone

+0

Parfait. Merci! – joeybaker

+5

Si vous souhaitez également prendre en compte les instances clonées et non sérialisées, ajoutez les méthodes magiques '__clone' et' __wakeup' et incrémentez le compteur en elles aussi. – Gordon

+0

Pour maintenir l'accessibilité, j'ai changé l'utilisation mixte de "statique" et "self" pour simplement coller à "statique", cependant, il est également valable de s'en tenir à "soi" pour les deux utilisations. – SEoF

3

Si votre classe a une fonction __construct() définie, il sera exécuté à chaque fois qu'une instance est créée. Vous pourriez avoir cette fonction incrémenter une variable de classe.

+1

D'oh! Trop lent. :) –

+0

Pouvez-vous donner un exemple? – Galen

Questions connexes