Eléphant du PHP |
127 Messages
29 août 2011, 16:57
Par extension, voici une petite classe contenant une seule méthode statique permettant de faire exactement la même chose mais plus réutilisable :
<?php
// Classe MonObj
class MonObj {
private $value = 0;
public function __construct($value) { $this -> value = $value; }
public function getValue() { return $this -> value; }
}
/**
* Classe permettant d'additionner les valeurs d'une propriété d'un objet
*/
class AddObj {
/**
* Méthode privé utilisée pour réaliser la somme des objets
* @param unknown_type $property
*/
private static function _getValue($obj, $property) {
return $obj -> $property();
}
/**
* Ajoute les propriétés d'une liste d'objets donnés
* @param $array Le tableau contenant les objets
* @param $property La propriété à utiliser pour effectuer l'addition
*/
public static function add(Array $array, $property) {
return array_sum(array_map(array(__CLASS__, '_getValue'), $array, array_fill(0, count($array), $property)));
}
}
// Tableau contenant les objets
$tab = array(
new MonObj(4),
new MonObj(7),
new MonObj(1),
new MonObj(2)
);
// Total
echo AddObj :: add($tab, 'getValue');