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

Problema extraño al invocar un metodo estatico

Estas en el tema de Problema extraño al invocar un metodo estatico en el foro de Frameworks y PHP orientado a objetos en Foros del Web. No se porque me fallará. alguna idea? Código PHP: <?php class  Sample {         public static function  test ( $type )     {         print  $type ;     } } $type  ...
  #1 (permalink)  
Antiguo 14/02/2007, 21:04
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Problema extraño al invocar un metodo estatico

No se porque me fallará. alguna idea?

Código PHP:
<?php
class Sample
{    
    public static function 
test($type)
    {
        print 
$type;
    }
}

$type 'Sample';    
$type::test($type);
?>
arroja lo siguiente:
Código PHP:
Parse errorparse errorunexpected T_PAAMAYIM_NEKUDOTAYIM in C:xampphtdocsoopmysqlmysql.php on line 10 
Pero sin embargo el siguiente ejemplo funciona sin problema:

Código PHP:
<?php
class Sample
{    
    public function 
__construct($type)
    {
        print 
$type;
    }
}

$type 'Sample';    
new 
$type($type);
?>
Cualquier idea es agradecida.

salu2

zsamer
  #2 (permalink)  
Antiguo 14/02/2007, 21:29
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Re: Problema extraño al invocar un metodo estatico

Y asi no te sirve?

Código PHP:
<?php
class Sample
{    
    public static function 
test($type)
    {
        print 
$type;
    }
}

$type 'Sample';    
Sample::test($type);
?>

Asi tambien funciona, pero no es tan bonito :P

Código PHP:
<?php
class Sample
{    
    public static function 
test($type)
    {
        print 
$type;
    }
}

$type 'Sample';    
eval(
$type '::test($type);');
?>
Saludos
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #3 (permalink)  
Antiguo 14/02/2007, 21:42
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problema extraño al invocar un metodo estatico

Tambien esta esta forma:
Código PHP:
call_user_func( array( 'Sample''test' ), $type ); 
  #4 (permalink)  
Antiguo 15/02/2007, 05:26
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Re: Problema extraño al invocar un metodo estatico

Si sigues jugando así, te vas a sacar un ojo.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #5 (permalink)  
Antiguo 15/02/2007, 06:51
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Re: Problema extraño al invocar un metodo estatico

Se supone que $type que corresponde al nombre de la clase es entregado por un parametro externo desconocido, es decir puede ser cualquier clase no una determinada y unica (Sample es un ejemplo), este parametro es recivido por url.

Por lo mismo necesito una forma dinámica.
  #6 (permalink)  
Antiguo 15/02/2007, 08:45
Avatar de vanetino  
Fecha de Ingreso: diciembre-2006
Ubicación: Lima, Peru
Mensajes: 22
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Problema extraño al invocar un metodo estatico

hola zsamer, me parece que de la 2 forma que te propuso Fridureiks, es lo que se ajusta a lo que quieres.

Saludos
  #7 (permalink)  
Antiguo 15/02/2007, 09:09
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Re: Problema extraño al invocar un metodo estatico

Cita:
Iniciado por vanetino Ver Mensaje
hola zsamer, me parece que de la 2 forma que te propuso Fridureiks, es lo que se ajusta a lo que quieres.

Saludos
estoy de acuerdo contigo, pero no me convence el metodo, nececito alguna otra forma, evitando eval().
  #8 (permalink)  
Antiguo 15/02/2007, 11:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problema extraño al invocar un metodo estatico

Prueba de la forma que te digo.

Código PHP:
$resultado call_user_func( array( "Nombre_De_La_Clase""Metodo_a_ejecutar" ), $parametro_a_enviar$puedes_enviar_otros$los_que_necesites ); 
  #9 (permalink)  
Antiguo 15/02/2007, 12:39
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Re: Problema extraño al invocar un metodo estatico

Cita:
Iniciado por GatorV Ver Mensaje
Prueba de la forma que te digo.

Código PHP:
$resultado call_user_func( array( "Nombre_De_La_Clase""Metodo_a_ejecutar" ), $parametro_a_enviar$puedes_enviar_otros$los_que_necesites ); 
funciona bien, pero quedé con la inquietud, de que no ejecuta el metodo como si fuera static osea:

Código PHP:
$resultado Nombre_De_La_Clase::Metodo_a_ejecutar($parametro_a_enviar); 
  #10 (permalink)  
Antiguo 15/02/2007, 12:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problema extraño al invocar un metodo estatico

Si lees el manual de PHP, te podras dar cuenta que la funcion call_user_func, su primer parametro es un Callback valido.

Te invito a que leas el manual y sabras como puedes enviar los metodos para que se ejecuten como estaticos.

Saludos.
  #11 (permalink)  
Antiguo 15/02/2007, 13:53
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Re: Problema extraño al invocar un metodo estatico

Cita:
Iniciado por GatorV Ver Mensaje
Si lees el manual de PHP, te podras dar cuenta que la funcion call_user_func, su primer parametro es un Callback valido.

Te invito a que leas el manual y sabras como puedes enviar los metodos para que se ejecuten como estaticos.

Saludos.
perfecto GatorV, con esta url, me aclaró todo, muchas gracias.

Código PHP:
<?php

// Una llamada de retorno de ejemplo
function mi_llamada_de_retorno() {
   echo 
'&iexcl;Hola mundo!';
}

// Un m&eacute;todo como llamada de retorno de ejemplo
class MiClase {
   function 
miMetodoDeRetorno() {
       echo 
'&iexcl;Hola Mundo!';
   }
}

// Tipo 1: Llamada de retorno simple
call_user_func('mi_llamada_de_retorno');

// Tipo 2: Llamada de metodo estatico de clase
call_user_func(array('MiClase''miMetodoDeRetorno'));

// Tipo 3: Llamada a un metodo de objeto
$obj = new MiClase();
call_user_func(array($obj'miMetodoDeRetorno'));
?>
saludos.
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 11:26.