Статическая переменная в функции устанавливается путем вызова другой функции

Я работаю в 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 действительно имеют набор данных в списке аргументов.

Есть ли способ сделать это?

5
задан Nathaniel 7 December 2010 в 17:12
поделиться