Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

PHP OO Var local en método sin instanciar clase???

Estas en el tema de Var local en método sin instanciar clase??? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola cómo están? creo es la primer consulta en el foro, espero puedan ayudarme. ---- class miClase { function miMetodo($aa) { $vv = $aa*10; //solo ...
  #1 (permalink)  
Antiguo 01/08/2011, 07:42
 
Fecha de Ingreso: noviembre-2010
Mensajes: 6
Antigüedad: 14 años, 1 mes
Puntos: 5
Pregunta Var local en método sin instanciar clase???

Hola cómo están?
creo es la primer consulta en el foro, espero puedan ayudarme.

----
class miClase {
function miMetodo($aa)
{
$vv = $aa*10; //solo a modo de ejemplo
}
}

miClase::miMetodo(30);
----

En el ejemplo de arriba, llamo al método miMetodo pero sin instanciar miClase.
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.

Desde ya muchas gracias por todo.
Guillermo
  #2 (permalink)  
Antiguo 01/08/2011, 08:05
Avatar de historiasdemaria  
Fecha de Ingreso: septiembre-2010
Ubicación: www
Mensajes: 433
Antigüedad: 14 años, 2 meses
Puntos: 54
Sonrisa Respuesta: Var local en método sin instanciar clase???

Cita:
Iniciado por elguilledigital Ver Mensaje
Hola cómo están?
creo es la primer consulta en el foro, espero puedan ayudarme.

----
class miClase {
function miMetodo($aa)
{
$vv = $aa*10; //solo a modo de ejemplo
}
}

miClase::miMetodo(30);
----

En el ejemplo de arriba, llamo al método miMetodo pero sin instanciar miClase.
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.

Desde ya muchas gracias por todo.
Guillermo
Tu metodo para poderlo llamar sin instanciar la clase, deberia ser static, no?

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

miClase::miMetodo(30); 
  #3 (permalink)  
Antiguo 01/08/2011, 08:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Var local en método sin instanciar clase???

No entiendo a que te refieres con crear una variable local, pero la forma de acceder al método es lo que se conoce como métodos estaticos, pero lo correcto es que le indiques al interprete de PHP que es estático:
Código PHP:
Ver original
  1. class Foo
  2. {
  3.         public static function bar($foo)
  4.         {
  5.  
  6.         }
  7. }

La palabra static indica que el método es estatico y lo puedes accesar usando ::.

Saludos.
  #4 (permalink)  
Antiguo 01/08/2011, 08:47
 
Fecha de Ingreso: noviembre-2010
Mensajes: 6
Antigüedad: 14 años, 1 mes
Puntos: 5
Respuesta: Var local en método sin instanciar clase???

Gracias por sus respuestas,

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.

y respecto a si la clase debe ser static, entiendo eso, pero ahora no es static y me funciona, igual estaría mal dejarlo sin static?

slds y gracias
  #5 (permalink)  
Antiguo 01/08/2011, 09:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Var local en método sin instanciar clase???

Sí porque en versión mas nuevas de PHP (5.2+) te genera un error y es probable que en PHP5.4 te genere un fatal error.

Lo mejor es dejarlo como debe de ser y es usando el keyword de static.

Saludos.
  #6 (permalink)  
Antiguo 02/08/2011, 22:48
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 10 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,

Etiquetas: instanciar, php, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:00.