From: Roland Häder Date: Mon, 25 Apr 2011 19:47:01 +0000 (+0000) Subject: Added a counter for all generated objects. X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=ae54dca581224b5fd6da5f90bb32f07eec43845e;p=core.git Added a counter for all generated objects. --- diff --git a/inc/classes/main/factories/class_BaseFactory.php b/inc/classes/main/factories/class_BaseFactory.php index 88b0ed40..3a89bac1 100644 --- a/inc/classes/main/factories/class_BaseFactory.php +++ b/inc/classes/main/factories/class_BaseFactory.php @@ -22,6 +22,16 @@ * along with this program. If not, see . */ class BaseFactory extends BaseFrameworkSystem { + /** + * Total objects generated + */ + private static $total = 0; + + /** + * Counter of all objects + */ + private static $objectCounters = array(); + /** * Protected constructor * @@ -32,6 +42,44 @@ class BaseFactory extends BaseFrameworkSystem { // Call parent constructor parent::__construct($className); } + + /** + * Count given object + * + * @param $className Name of the class we shall count + */ + protected static final function countObject ($className) { + // Count it up in total sum + self::$total++; + + // Do we have an entry? + if (!isset(self::$objectCounters[$className])) { + // No, then generate one + self::$objectCounters[$className] = 0; + } // END - if + + // Count it up again + //* NOISY-DEBUG: */ print __METHOD__.': className=' .$className . "\n"; + self::$objectCounters[$className]++; + } + + /** + * Static getter for total object count + * + * @return $total Total amount of generated objects + */ + public static final function getTotal () { + return self::$total; + } + + /** + * Static getter for all object counters + * + * @return $objectCounters An array with all object counters + */ + public static final function getAllCounters () { + return self::$objectCounters; + } } // [EOF] diff --git a/inc/classes/main/factories/objects/class_ObjectFactory.php b/inc/classes/main/factories/objects/class_ObjectFactory.php index 08a9352b..b84f55a2 100644 --- a/inc/classes/main/factories/objects/class_ObjectFactory.php +++ b/inc/classes/main/factories/objects/class_ObjectFactory.php @@ -22,11 +22,6 @@ * along with this program. If not, see . */ class ObjectFactory extends BaseFactory { - /** - * Total objects generated - */ - private static $total = 0; - /** * Protected constructor * @@ -70,8 +65,8 @@ class ObjectFactory extends BaseFactory { // Run the user function $objectInstance = call_user_func_array(array($className, $methodName), $args); - // Count generated objects up - self::$total++; + // Count this one up + self::countObject($className); // Return the prepared instance return $objectInstance; @@ -94,15 +89,6 @@ class ObjectFactory extends BaseFactory { // Return the instance return $objectInstance; } - - /** - * Static getter for total object count - * - * @return $total Total amount of generated objects - */ - public static final function getTotal () { - return self::$total; - } } // [EOF]