Я работаю в 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"
);
}
Вышеупомянутое НЕ работает. Это приводит к ошибке - неожиданно '(', ожидая ',' или ';'.
Я понимаю, что это сработает, и оно будет передано по ссылке, что устранит накладные расходы, однако это требует дополнительной работы убедившись, что вызовы callRepeatedly действительно имеют набор данных в списке аргументов.
Есть ли способ сделать это?