Pregunta

Estoy usando un hack ge_called_class para permitir la unión en PHP versión 5.2 estática finales (que se encuentra aquí ).

Tengo el siguiente en mi código:

# db_record.php
$ac = "ForumThread";
$objects = $ac::find("all");

Esto no funcionará en PHP 5.2 por alguna razón, por lo que yo he hecho esto:

# db_record.php
$ac = "ForumThread";
eval("\$objects = {$ac}::find('all');");

Esto, por otra parte no va a funcionar con la función get_called_class. Me aparece un error que la función file no puede leer la sección evaled de código.

¿Fue útil?

Solución

Si estás usando eval, su solución es erróneo.

¿Por qué no su trabajo versión no eval? Lo que va mal? ¿Cuál es el mensaje de error total y completa?

La versión de suppled usuario realiza una traza get_called_class e intenta abrir el archivo de la persona que llama para determinar el nombre de la clase. La razón falla la eval es debido a que la traza eval no proporciona un nombre de archivo.

(Editar:.? También, ese truco get_called_class es en gran medida un truco ¿Hay alguna razón no se puede usar 5,3)

¿Ha intentado utilizar call_user_func ? call_user_func(array($ac, 'find'), 'all') debe llamar a la find método estático para el nombre de la clase contenida en $ac con el parámetro de 'all'. Véase también el de devolución de llamada de tipo seudo, y el "Tipo 2" en el ejemplo específico

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top