2008-10-17 11 views
28

Tengo una función que es efectivamente un reemplazo para la impresión, y quiero llamarla sin paréntesis, como llamar a imprimir.¿Puedo crear una función PHP a la que pueda llamar sin paréntesis?

# Replace 
print $foo, $bar, "\n"; 

# with 
myprint $foo, $bar, "\n"; 

En Perl, puede crear subrutinas con plantillas de parámetros y permite exactamente este comportamiento si se define una subrutina como

sub myprint(@) { ... } 

algo similar en PHP?

Respuesta

22

impresión no es un variable functions

Debido a que este es un lenguaje de construir y no una función, no puede ser llamado usando funciones variables

Y:

Variable funciones

PHP admite el concepto de funciones variables . Esto significa que si un nombre de variable tiene paréntesis anexados , PHP buscará una función con el mismo nombre que evalúa la variable , y intentará ejecutarla. Entre otras cosas , esto se puede utilizar para implementar devoluciones de llamada, tablas de funciones, y así adelante.

9

No, no puedes hacer eso en PHP. Imprimir no es realmente una función, es una "construcción de lenguaje".

11

Solo editando la base de código PHP y agregando una nueva construcción de lenguaje.

-Adam

1

No, PHP no le permitirá hacer eso.

2

que estaba buscando una manera de codificar un echoh a hacer algo como:

echoh "hello"; 

y obtener:

'hello<br>\n'. 

Creo que una solución podría ser la definición de una constante y utilizarlo :

<?php 
const PHP_BR_EOL = "<br>\n"; 
echo "Hello" . PHP_BR_EOL; 
?> 

Ahora me sale:

Hello<br> 

sé que requiere más escribir, pero es más complient con los ejemplos en el manual de PHP, y utilizo gvim con omnicomplete para ahorrar en la tipificación. También sería fácil hacer una búsqueda global/reemplazar PHP_EOL por PHP_BR_EOL.

Cuestiones relacionadas