Я работаю в PHP.
У меня есть функция (F1), которая вызывается переменное количество раз.В этой функции мне нужно загрузить постоянный набор данных из другой функции (F2).Загружается всегда один и тот же набор данных, однако загрузка набора включает в себя поиск и обработку в базе данных.Вместо многократного вызова F2 и увеличения требований к накладным расходам / избыточности / обработке, я хотел бы поместить результат в статическую переменную в F1.Однако, по какой-либо причине, это не позволит мне установить переменную как статическую, используя вызов функции.
Пример кода:
function calledRepeatedly() {
static $dataset = loadDataset();
// some minor processing here using the dataset
// and probably a loop
return "stuff";
}
function loadDataset() {
//intensive dataset load code
//plus a database lookup or two
//whatever else
return array(
"data1",
"data2"
);
}
Выше НЕ работает.Это приводит к ошибке - неожиданно '(', ожидая ',' или ';'.
Я понимаю, что это будет работать, и будет передано по ссылке, таким образом устраняя издержки, однако это включаетдополнительная работа по проверке того, что вызовы для namedRepeatedly действительно имеют набор данных в списке аргументов.
Есть ли способ сделать это?