wp_title tag page get_the_title get_body_class body_class body php function if-statement

php - page - wordpress title tag



Una funciĆ³n dentro de una estructura if (5)

Básicamente sí, según el manual :

Cualquier código PHP válido puede aparecer dentro de una función, incluso otras funciones y definiciones de clase.

Personalmente, no he tenido una situación en la que realmente haga una cosa así. ¡La mayoría de las veces sería más fácil agrupar sus funciones en un lugar donde realmente se puedan encontrar! ;-)

¿Puedo poner una función en PHP dentro de una estructura if? Me gusta esto:

<?php if(true){ function HelloWorld(){ echo "Hello World!!!"; } HelloWorld(); } ?>

Porque lo he intentado y funciona, pero no sé si es correcto o no. Gracias


Como dice middaparka , esto es perfectamente legal, pero en términos de uso, es posible que desee comprobar si existe una función antes de declararla:

if (!function_exists("foo")) { function foo() { return "bar"; } }


Esto es perfectamente legal: simplemente define la función dentro del bloque de instrucciones if. Dicho esto, todo por qué querrías hacer esto es un misterio.

También vale la pena señalar que esta función estará disponible en el ámbito global (es decir, fuera del bloque de instrucciones if), como ...

Todas las funciones y clases en PHP tienen un alcance global: se pueden llamar fuera de una función incluso si se definieron dentro y viceversa.

Consulte la página de manual de funciones definidas por el usuario de PHP para obtener más información.


Parece un poco extraño, pero sí es legal

A partir de PHP 5.3, si necesita una función con un alcance limitado (por ejemplo, para una devolución de llamada) puede usar funciones / cierres anónimos


Quería agregar una respuesta aquí, porque hay una advertencia que no se aborda en las otras respuestas.

Según mis pruebas en 5.3, parece que las funciones se definen dentro if estructuras se definen en tiempo de ejecución, en lugar de en tiempo de compilación como otras funciones.

Por ejemplo, fuera de un bloque condicional, esto:

foo(); function foo(){ echo ''foo!''; }

funciona bien porque la función se define en tiempo de compilación y se ejecuta en tiempo de ejecución. Pero llamando a la función antes de definirla dentro de un bloque de condición:

if(1){ foo(); // Call to undefined function! function foo(){ echo ''foo!''; } }

Producirá un error de call to undefined function , al menos a partir de la versión 5.3.

Pero definir la función en un bloque if antes de llamarlo es válido:

if(1){ function foo(){ echo ''foo!''; } foo(); // No errors, since function is defined! }

Por lo tanto, hay que tener en cuenta que es importante tenerlo en cuenta al definir funciones dentro de un condicional: la función debe definirse en el código antes de llamar a la función, ya que las funciones condicionales no parecen definirse en el momento de la compilación.

El OP también preguntó sobre el rendimiento. Si la función condicional se define en tiempo de ejecución en lugar de tiempo de compilación como la mayoría de las otras funciones, entonces esta función no se beneficiará de los impulsores de rendimiento como el almacenamiento en caché OpCode, que, dependiendo de las circunstancias, podría ralentizar su aplicación. Por ejemplo, si su archivo maestro php se ve como:

if($IsLoggedIn){ // include files/functions and bootstrap here... }

Entonces, toda la aplicación podría no beneficiarse del almacenamiento en caché de OpCode.