Ver Mensaje Individual
  #6 (permalink)  
Antiguo 02/08/2011, 22:48
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Var local en método sin instanciar clase???

Hola,

Cita:
Iniciado por elguilledigital Ver Mensaje
... Es válido crear una variable local???
En mi pc funciona, pero no se qué pasará cuando lo suba a la web y varias personas accedan al mismo tiempo. ...
Cita:
Iniciado por elguilledigital Ver Mensaje
... me refería a la variable $vv, que es local dentro del método, está bien eso? pregunto porque llamo al método sin instanciar la clase.
...
Posiblemente te refieres a la concurrencia, un método estático o de clase está alojado en un área compartida de la memoria, si dos objetos usan el método al mismo tiempo, no está sincronizado e intentan modificar una variable estática pueden suceder errores.

Primero, PHP no es multi proceso ni multi hilos internamente, sin utilizar funciones específicas para ese objetivo. Segundo cada solicitud es y debería ser procesada en un proceso diferente del sistema operativo o el servidor web y no comparten la misma memoria; en una instalación normal.

La palabra reservada 'static' le dice al compilador que debe almacenar el método en un área compartida y no debe pasar (internamente) el puntero 'this' a dicho método. Pero si no modifican ninguna variable dinámica de instancia, ni hacen referencia a la instancia con this, (lo cual no podrían porque no pertenecen a ninguna instancia), entonces funcionan de igual forma que un método normal, con pequeñas variaciones, velocidad, etc.

Código PHP:
   static public function miMetodo($aa)
  {
    
$vv $aa*10//solo a modo de ejemplo
  
}

En PHP no podrías llamar al método miMetodo() dos veces al mismo tiempo, sin usar funciones específicas para eso. Por lo tanto, en los métodos estáticos o de clase en PHP no deberían haber problemas de concurrencia ... normalmente.

Saludos,