Tutorial: Escribir un Custom printf () Wrapper Función en PHP

  • spork
  • Brewmaster
  • Silver Member
  • Avatar de Usuario
  • Registrado: Sep 22, 2003
  • Mensajes: 6134
  • Loc: Seattle, WA
  • Status: Offline

Nota Junio 23rd, 2008, 9:00 pm

Nota: El código fuente completo de los ejemplos de este tutorial puede ser descargado al final del tutorial.

Introducción


La función printf () y sus parientes se encuentran entre los más versátiles y bien conocidas funciones para el envío de cadenas de formato de salida a los archivos y la pantalla. Que son aplicadas por muchos idiomas, incluyendo C, Java, Perl, PHP, Python, Ruby, y un puñado de otros.

Uno de printf () s beneficios firma es su capacidad para aceptar un número variable de argumentos. Esto permite que el texto impreso, que contiene innumerables variaciones de los valores de formato y cuerdas. En este tutorial, aprenderás cómo ampliar esta funcionalidad para crear su propia printf () de envoltura.

¿Por qué queremos hacer esto? Una de las razones más evidente sería la de crear nuestra propia advertencia () o error () funciones que actúan como printf () pero puede ser condicionalmente encendido o apagado en, por ejemplo, una bandera o el valor de configuración booleana. Esto nos ahorraría la necesidad de ajustar las intervenciones individuales de depuración en bloques condicionales, reduciendo el tamaño del código y la complejidad.

Este tutorial te muestra cómo hacer esto de PHP.

Nuestro Silver Bullet: vprintf ()


El secreto de nuestro éxito aquí es printf () s primo cercano, vprintf (). Esta función hace lo mismo que printf (), pero difiere en la forma en que acepta argumentos. Como sabemos, printf () acepta una cadena de formato y un número variable de argumentos. vprintf () Por otra parte acepta una cadena de formato y, a continuación una serie de argumentos. Es esta matriz que nos permite pasar fácilmente a todos los argumentos de nuestra función en printf ().

Con el fin de generar esta matriz de nuestra función, se utiliza la función de PHP func_get_args () . Esta función devuelve una matriz que contiene los argumentos pasados a la función.
PHP Código: [ Select ]
<?php
function printThis() {
    $argv = func_get_args();
    $format = array_shift( $argv );
    vprintf( $format, $argv );
}
?>
  1. <?php
  2. function printThis() {
  3.     $argv = func_get_args();
  4.     $format = array_shift( $argv );
  5.     vprintf( $format, $argv );
  6. }
  7. ?>

No es necesario declarar los argumentos a favor de nuestra función; func_get_args () se encargará de la variable número de argumentos pasados pulg Además, desde la matriz en la que recibe contiene todo de nuestros argumentos, queremos asegurarnos de cambio fuera el primer elemento para ser utilizado como la cadena de formato, manteniendo la matriz restante como nuestros argumentos.

Todo en conjunto


Ahora que el weve éxito envuelto printf () en nuestra propia función, le permite seguir adelante y crear nuestro propio error () que se comporta exactamente igual que printf (), pero muestra "Error:" antes de que nuestros mensajes.
PHP Código: [ Select ]
<?php
function error() {
    $argv = func_get_args();
    $format = array_shift( $argv );
    printf( 'Error: ' );
    vprintf( $format, $argv );
    printf( "\n" );
}
?>
  1. <?php
  2. function error() {
  3.     $argv = func_get_args();
  4.     $format = array_shift( $argv );
  5.     printf( 'Error: ' );
  6.     vprintf( $format, $argv );
  7.     printf( "\n" );
  8. }
  9. ?>

Eso es todo lo que hay. Usted puede llamar a error () de la misma forma exacta que podría llamarse printf (). Como he dicho antes, usted puede rodear su definición con un condicional para que la producción sólo se generará si se establece una marca determinada. Útil, ¿eh?

Conclusión


Ahora debe saber cómo crear una función propia de printf () con el fin de adaptarla a sus necesidades. Tenga en cuenta que puede crear funciones con argumentos de longitud variable para muchos otros fines.

Usted puede encontrar los recursos útiles siguientes cuando se trabaja con la función printf () de la familia de funciones:
printf () , fprintf () , vprintf () , vfprintf ()

Yo siempre bienvenidos preguntas o comentarios acerca de este tutorial. Basta con enviar una respuesta o PM me im glad to help!
Attachments:
printf_php.zip

(554 Bytes) 300 veces

Complete source code for the example in this tutorial.

The Beer Monocle. Classy.
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Junio 23rd, 2008, 9:00 pm

  • Rabid Dog
  • Web Master
  • Web Master
  • Avatar de Usuario
  • Registrado: May 21, 2004
  • Mensajes: 3229
  • Loc: South Africa
  • Status: Offline

Nota Agosto 7th, 2009, 9:12 am

Eso es muy aseado :)
Watch me grow

Publicar Información

  • Total de mensajes en este tema: 2 mensajes
  • Moderador: Tutorial Writers
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC