Calling functions with variable functions
I agree, it does feel dirty to compute the function name like that.

A typical way to do dynamic dispatching is using polymorphism.  You could formalize the mechanism for determining which function to call by making some property-extracting objects:

abstract class PropertyExtractor {
    public abstract function getProperty($group);
}

class SumTotalExtractor extends PropertyExtractor {
    public function getProperty($group) {
        return $group-&gt;getSumTotal();
    }
}

class SumCountExtractor extends PropertyExtractor {
    public function getProperty($group) {
        return $group-&gt;getSumCount();
    }
}




Your buildChartGroups() would take one of those extractors as the second parameter:

private function buildChartGroups(PropelCollection $groups, $propertyExtractor) {
    $chart = array();
    foreach ($groups as $group) {
        $chart[] = array('name' =&gt; $group-&gt;getName(), 
                         'y' =&gt; $propertyExtractor-&gt;getProperty($group));
    }
    return $chart;
}




Here it is in use:

$result = $this-&gt;buildChartGroups($groups, new SumTotalExtractor());