Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   Problema extraño al invocar un metodo estatico (http://www.forosdelweb.com/f68/problema-extrano-invocar-metodo-estatico-465152/)

zsamer 14/02/2007 21:04

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

Fridureiks 14/02/2007 21:29

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

GatorV 14/02/2007 21:42

Re: Problema extraño al invocar un metodo estatico
 
Tambien esta esta forma:
Código PHP:

call_user_func( array( 'Sample''test' ), $type ); 


enriqueplace 15/02/2007 05:26

Re: Problema extraño al invocar un metodo estatico
 
Si sigues jugando así, te vas a sacar un ojo.

zsamer 15/02/2007 06:51

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.

vanetino 15/02/2007 08:45

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

zsamer 15/02/2007 09:09

Re: Problema extraño al invocar un metodo estatico
 
Cita:

Iniciado por vanetino (Mensaje 1894340)
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().

GatorV 15/02/2007 11:32

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 ); 


zsamer 15/02/2007 12:39

Re: Problema extraño al invocar un metodo estatico
 
Cita:

Iniciado por GatorV (Mensaje 1894637)
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); 


GatorV 15/02/2007 12:58

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.

zsamer 15/02/2007 13:53

Re: Problema extraño al invocar un metodo estatico
 
Cita:

Iniciado por GatorV (Mensaje 1894790)
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.


La zona horaria es GMT -6. Ahora son las 05:41.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.