Foros del Web » Programando para Internet » PHP »

[Aporte] Mostrar parámetros de funciones al "estilo WordPress"

Estas en el tema de [Aporte] Mostrar parámetros de funciones al "estilo WordPress" en el foro de PHP en Foros del Web. Hay una diferencia entre esto @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original <?php mi_funcion ( $alto = 95 , $ancho = 120 , $profundidad = 40 ...
  #1 (permalink)  
Antiguo 23/04/2011, 09:36
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
[Aporte] Mostrar parámetros de funciones al "estilo WordPress"

Hay una diferencia entre esto
Código PHP:
Ver original
  1. <?php mi_funcion($alto = 95 , $ancho = 120 , $profundidad = 40 , $color = 'blanco') ?>
y esto
Código PHP:
Ver original
  1. <?php mi_funcion('alto=95¬ancho=120&profundidad=40&color=blanco') ?>
La diferencia es que el segundo ejemplo tiene más facilidad de uso para eventuales usuarios finales que no saben mucho de programación (por ejemplo diseñadores web).

Si desarrollamos un proyecto que nos exige orientar la programación hacia la reutilización por parte de terceros del código que generamos, ésta es una propuesta viable. Podemos construir una "semi-API" sencilla y generar etiquetas tipo WordPress listas para usar.

Lo primero que haremos será quitar prestada cierta función nativa de WordPress que trabaja sin problemas de forma independiente:

Código php:
Ver original
  1. function wp_parse_args( $args, $defaults = '' ) {
  2.     if ( is_object( $args ) )
  3.         $r = get_object_vars( $args );
  4.     elseif ( is_array( $args ) )
  5.         $r =& $args;
  6.     else
  7.         parse_str( $args, $r );
  8.  
  9.     if ( is_array( $defaults ) )
  10.         return array_merge( $defaults, $r );
  11.     return $r;
  12. }

Ahora construiremos nuestra función como siempre, pero con algunas ligeras diferencias. Desde luego todos los parámetros serán parte de un array inicial, al cual podemos asignar valores por defecto. Aprovecharé de colocar el código completo para ser probado de una vez:

Código php:
Ver original
  1. <?php
  2. function wp_parse_args( $args, $defaults = '' ) { // La función de WordPress
  3.     if ( is_object( $args ) )
  4.         $r = get_object_vars( $args );
  5.     elseif ( is_array( $args ) )
  6.         $r =& $args;
  7.     else
  8.         parse_str( $args, $r );
  9.  
  10.     if ( is_array( $defaults ) )
  11.         return array_merge( $defaults, $r );
  12.     return $r;
  13. }
  14.  
  15. function mi_funcion($a = null) { // Nuestra función
  16.     $params = array(
  17.         'alto' => 95,
  18.         'ancho' => 120,
  19.         'profundidad' => 40,
  20.         'color' => 'blanco'
  21.     );
  22.     $r = wp_parse_args($a, $params); // Usamos la función de WP justo aquí
  23.     extract( $r , EXTR_SKIP );
  24.  
  25.     //Ya hemos convertido las claves en variables y trabajamos a nuestro antojo
  26.     $html = '<p>Ancho: '. $ancho .' - Alto: '. $alto .' - Profundidad: '. $profundidad .' - Color: '. $color .'</p>' . "\n";
  27. return $html;
  28. }
  29.  
  30. echo mi_funcion('alto=200&color=Gris Perlado'); // Probando
  31. ?>

Personalmente prefiero aplicar este método hasta para usarlo yo mismo, debido a lo cómodo que resulta anotar los parámetros.

El método no impide expresar la función de la forma tradicional, cuyo resultado es el mismo si escribimos:

Código php:
Ver original
  1. echo mi_funcion(array(
  2.     'alto' => 200,
  3.     'color' => 'Gris Perlado'
  4. ));

Referencia: Ubicación exacta de la función en el sistema de archivos WordPress

Etiquetas: estilo, funciones, wordpress
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

SíEste tema le ha gustado a 3 personas




La zona horaria es GMT -6. Ahora son las 10:24.