Estoy trabajando en PHP.Variable estática en función establecida llamando a otra función
Tengo una función (F1) que se llama una cantidad variable de veces. Dentro de esa función, necesito cargar un conjunto de datos constante desde otra función (F2). Siempre es el mismo conjunto de datos cargado, sin embargo, cargar el conjunto implica algunas búsquedas y procesamiento de la base de datos. En lugar de llamar repetidamente a F2 y aumentar los requisitos de sobrecarga/redundancia/procesamiento, me gustaría poner el resultado en una variable estática en F1. Sin embargo, por cualquier razón, no me permitirá establecer la variable como estática utilizando la llamada a la función.
Un ejemplo de código:
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"
);
}
Lo anterior no funciona. Resulta en un error inesperado '(', expecting ',' o ';'.
Me doy cuenta de que funcionaría, y se aprobaría por referencia, eliminando así la sobrecarga, sin embargo, eso implica el trabajo adicional de asegurarse de que las llamadas a calledRepeatedly en realidad tienen el conjunto de datos en la lista de argumentos.
¿hay alguna manera de hacer esto?
no puede almacenar expresiones en una variable estática. Se resuelven en tiempo de compilación, por lo que aún no se puede llamar a la función. No sé si php admite funciones estáticas. –
¿Qué tal hacer una clase y guardarla en una propiedad? ;-) – thedom
@Mark, solo dentro de las clases. –