Por alguna razón, la versión en castellano del manual no tiene el título
static, aunque la explicación si esta alli:
http://www.php.net/manual/es/language.variables.scope.phpasi pues, no puedo recomendarte RTFM.
Static, y es lo mismo en muchos lenguajes, no es para definir una constante
sino para definir una variable que conserva su valor entre llamadas a la
funcion. En cuanto al valor contenido en la variable, es como si fuera
global, o sea, una vez que tiene el valor, no lo pierde, pero en cuanto a
uso del espacio de nombres, la variable no ocupa espacio global, fuera de la
funcion en que se declara es desconodica.
En el caso de $instance, de no ser declarada como static, cada vez que se
llame la funcion estaría 'unset'. Al ser static, solo la primera vez lo
estara, en las subsiguientes tendra una instancia de la clase recien creada.
Lo que tienes ahi es un patron 'singleton' que garantiza que siempre que lo
llames obtendras la misma única copia de esa clase, que entre llamadas
permanecerá almacenada en $instance.
Satyam
----- Original Message -----
From: "Jacobo Pedrosa" <jackobo83@gmail.com>
To: <php-es@lists.php.net>
Sent: Monday, September 03, 2007 5:10 PM
Subject: [PHP-ES] definicion de static
Hola a todos,
Durante el estudio de la aplicación PhpMyVisities, me he encontrado que en
la declaración de una variable, delante pone "static" y el editor me lo
reconoce como función php.
Por lógica entiendo que establece la variable como estática, es decir como
una constante. igual que con la función "define", pero a continuación me
pregunta el valor de esta variable cuando no veo que le de ninguno.
function &getInstance()
{
static $instance;
if (!isset($instance)){
$c = __CLASS__;
$instance = new $c;
}
return $instance;
}
Alguna idea? Gracias de antemano
PD: Que significa el signo & delante de esta función?
--------------------------------------------------------------------------------
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.484 / Virus Database: 269.13.2/985 - Release Date: 02/09/2007
16:32