/** * Extracts data from payload, passes it to callback and overrides payload data with result * * @param Payload $payload * @param $callback * @return Payload */ public static function manipulate(Payload $payload, $callback) { self::assert_callable($callback); $payload->replaceData($callback($payload->extractTypeData())); return $payload; }