$rand = new rand($db, $id);
${'rand__' . $rand->getName()} = explode(PHP_EOL, $rand->getValue());
В этом фрагменте мы получаем строки от $rand->getValue(), далее разбиваем их на массив дабы каждая строка была в каждом элементе массива, но что проиходит в
${'rand__' . $rand->getName()}
?
Выражение в фигурных скобках вычисляется, затем получившаяся строка используется в качестве имени переменной, после чего берётся знчаение данной переменной.
На всякий случай отмечу, что использование такой конструкции потенциально небезопасно и так точно не следует поступать с данными, пришедшими от пользователя.