functionToApply = $functionToApply; $this->functionParameters = $functionParameters; $this->columnToFilter = $columnToFilter; $this->filter(); } protected function filter() { foreach($this->table->getRows() as $key => $row) { $parameters = array($this->getElementToReplace($row, $this->columnToFilter)); if(!is_null($this->functionParameters)) { $parameters = array_merge($parameters, $this->functionParameters); } $newValue = call_user_func_array( $this->functionToApply, $parameters); $this->setElementToReplace($row, $this->columnToFilter, $newValue); } } protected function setElementToReplace($row, $columnToFilter, $newValue) { $row->setColumn($columnToFilter, $newValue); } protected function getElementToReplace($row, $columnToFilter) { return $row->getColumn($columnToFilter); } }