Aumente la productividad mediante la creación de funciones de ayuda de PHP

Cada trabajador necesita una buena caja de herramientas, y los desarrolladores web no son diferentes. Las funciones de ayuda de PHP están diseñadas para acelerar y homogeneizar tareas repetitivas y hacer su vida mucho más fácil. Este primer tutorial explica cómo hacer ayudantes de enlaces que mejorarán sus métodos para agregar hipervínculos y enlaces de correo a sus aplicaciones web..


Una introducción

Sí, no hay nada como dispositivos impresionantes que ahorren tiempo y que hagan la vida más fácil. Existen muchas herramientas útiles que pueden mejorar su flujo de trabajo, desde cuadrículas y diseños de CSS a sistemas y marcos de administración de contenido de pleno derecho..

Sin embargo, este tutorial profundizará en el concepto de las funciones de ayuda de PHP y en cómo puede escribir fragmentos generalizados para su sitio que podrá usar una y otra vez. Estas son funciones que aceleran y limpian el proceso de codificación, de modo que se pueden minimizar las tareas repetitivas y se puede pasar más tiempo preocupándose por las cosas importantes de la vida ... como la cena.


Ayudantes de hipervínculo

Una de las tareas repetitivas más comunes que tenemos que escribir es el hipervínculo. Al crear una función auxiliar para esto, podemos ahorrar tiempo cada vez que necesitamos escribir una, eliminar cualquier posibilidad de errores de sintaxis y asegurarnos de que el código sea fácil de actualizar si se mueven los archivos o si está moviendo un sitio a otro. dominio. Para comenzar, haremos una función muy simple en un archivo llamado helpers.php:

  

Se puede hacer referencia a este pequeño bebé cada vez que necesitamos obtener la ruta completa de acceso a un archivo, y se puede consultar una y otra vez durante el desarrollo de su sitio. Este es un método más útil que simplemente llamar al dominio con el método $ _SERVER ['HTTP_HOST'], porque no cambiará si alguien ha escrito el dominio con o sin "www", y funciona felizmente si su sitio está activado. un subdominio, por ejemplo "http: // localhost / my-site".

También es increíblemente útil al mover el sitio, ya que todas las rutas absolutas se referirán a esta función única, por lo que cambiar la variable $ dominio al nuevo dominio cambiará todos sus enlaces en todo el sitio, de una sola vez..


Agilizar ese código

Lo que intentaremos hacer ahora es crear una nueva función llamada "ancla" que genere una cadena estándar html compatible con un título. Aquí hay un ejemplo de lo que nos gustaría mostrar:

 Nueva pagina

Y esto es lo que nos gustaría que escribiéramos:

 echo anchor ('new-page.php', 'New Page');

Entonces, aquí se hace referencia a una función de PHP que tiene dos variables que se están transmitiendo: una para el enlace y otra para el texto de la pantalla. Así que ahora, aún en nuestro archivo helpers.php, podemos comenzar a escribir la nueva función:

 función anchor ($ link, $ text) // 1 $ domain = get_domain (); // 2 $ link = $ dominio. $ enlace; // 3 $ data = ''; $ datos. = $ texto; // 4 $ datos. = ""; devuelve $ datos; 
  1. Aquí, configuramos la función "ancla" con dos variables de paso.
  2. Luego obtenemos el nombre de dominio de la función get_domain () que ya hemos creado.
  3. A continuación, agregamos la variable $ link que se ha enviado a la función.
  4. Luego comenzamos a crear la cadena de salida en una variable llamada $ data, y usamos la variable $ text para duplicar tanto el texto visible del sitio como la etiqueta de "título" para el enlace.

Ahora podemos probar esto. Cree un nuevo archivo llamado index.php, en la misma carpeta que este archivo helpers.php, y escriba:

 requiere ('helpers.php'); echo anchor ('new-page.php', 'New Page');

Aquí, hemos conectado los dos archivos con la función require (), y luego hemos llamado a la función anchor (), enviando dos variables personalizadas con ella. Si prueba esto en un navegador verá nuestro resultado deseado:

 Nueva pagina

Hazlo flexible

Esta simple función puede ser útil, pero sin duda se reducirá pronto. Necesitamos agregar tres nuevas características antes de que se convierta en realmente impresionante y flexible; En primer lugar, una opción para agregar etiquetas de título personalizadas; En segundo lugar, para poder agregar reglas CSS; y en tercer lugar, una opción para que se abra en una nueva ventana, si es necesario.

Revisemos primero las etiquetas de título personalizadas. Las etiquetas de título son muy importantes para fines de SEO, y si no las colocas en tus enlaces en este momento, te recomiendo que se convierta en un hábito de ahora en adelante. Esta función lo forzará a hacerlo, en realidad, ya que es mucho más fácil de agregar, y si no ha agregado uno manualmente, se usará una copia predeterminada del texto en pantalla..

 función anchor ($ link, $ text, $ title) // 1 $ domain = get_domain (); $ link = $ dominio. $ enlace; $ datos = ''; $ datos. = $ texto; $ datos. = ""; devuelve $ datos; 

Así que aquí hay una versión modificada y mejorada de nuestra función anchor ().

  1. Ahora hemos añadido una tercera variable, $ título.
  2. Luego ejecutamos una verificación para ver si se ha ingresado una etiqueta de título personalizada.
  3. Si es así, agregamos una parte a nuestra cadena de datos $ de salida que establece la etiqueta del título3.
  4. Si no se ha ingresado nada, la etiqueta del título aparecerá como predeterminada en el texto de la pantalla, $ texto, como estaba antes.

Ahora, si cambiamos nuestra función, llamemos en index.php a:

 echo anchor ('new-page.php', 'New Page', 'Custom Title Message!');

Terminaremos con esta salida satisfactoria:

 Nueva pagina

Estilo y opciones de destino

Para asegurarnos de que aún podamos usar este asistente, incluso si necesitamos agregar CSS personalizadas o etiquetas de destino, ahora agregaremos una parte a nuestra función que leerá una cuarta variable y emitiremos el html correcto en consecuencia.

Necesitamos que esta función sea lo suficientemente inteligente como para ver si queremos incluir una clase CSS, un ID de CSS o una etiqueta de destino, y también queremos poder incluir múltiples opciones, una opción singular o ninguna opción en absoluto. Primero, modifiquemos un poco nuestra función de anclaje:

 función anchor ($ link, $ text, $ title, $ extras) // 1 $ domain = get_domain (); $ link = $ dominio. $ enlace; $ datos = ''; $ datos. = $ texto; $ datos. = ""; devuelve $ datos; 
  1. En primer lugar, agregamos una cuarta variable de paso, llamada "$ extras". Esto contendrá todas nuestras opciones personalizadas adicionales.
  2. A continuación, verificamos si estamos pasando una matriz en esta variable. Usaremos una matriz si estamos pasando varios extras a la función, por ejemplo, si necesitamos que tenga un ID de CSS y una clase de CSS diferente para nuestro enlace.
  3. Si es una matriz, lo recorreremos y empujaremos cada elemento a través de una nueva función llamada "parse_extras". Esta función tomará los bits adicionales que hemos ingresado y creará la salida HTML correspondiente y correcta..
  4. Si $ extras es una cadena, significa que solo hemos pasado una regla a través; para que podamos ejecutar nuestra nueva función parse_extras () en el elemento individual. De manera útil, la función is_string () devuelve FALSE si la variable está vacía; así que con este fragmento de código, si no se pasa nada a través de $ extras, entonces no se ejecutará ningún código, y se omitirá.
  5. Ahora necesitamos hacer nuestra nueva función, parse_extras ():

     función parse_extras ($ regla) si ($ regla [0] == "#") // 1 $ id = substr ($ regla, 1, strlen ($ regla)); // 2 $ data = ''; // 3 devuelve $ datos;  if ($ rule [0] == ".") // 4 $ class = substr ($ rule, 1, strlen ($ rule)); $ datos = ''; devuelve $ datos;  if ($ rule [0] == "_") // 5 $ data = 'target = "'. $ rule. '"'; devuelve $ datos; 

    Esta función hace uso del hecho de que todos nuestros extras comenzarán con un identificador único. Si estamos pasando un ID de CSS, comenzará con un hash (#), si estamos pasando una clase de CSS, comenzará con un punto (.), Y si estamos pasando un objetivo, comenzará con un guión bajo (_).

    1. Podemos verificar cuál es el primer carácter de una cadena usando la sintaxis $ cadena [0]. Puede estar acostumbrado a usar esta sintaxis para recuperar el primer elemento de una matriz, pero también es un método muy útil y rápido para encontrar caracteres específicos dentro de cadenas.
    2. A continuación, creamos una nueva variable, que es nuestra regla $ ingresada, con el primer carácter cortado. Ahora que hemos identificado para qué sirve la regla, ya no la necesitamos para nuestra salida html. Esta combinación de substr () y strlen () es un fragmento útil para cortar el primer carácter de una cadena.
    3. Ahora podemos crear nuestra cadena de salida html de $ data, lista para devolver. Este método ahora se puede repetir, en primer lugar si la regla $ es una clase CSS y luego si es una etiqueta de destino html. Vale la pena mencionar que no necesitamos recortar el primer carácter de la etiqueta de destino, ya que html usa el subrayado anterior (_), a diferencia de las reglas de CSS.

    Ahora que hemos creado todas nuestras funciones necesarias, podemos volver a nuestro archivo index.php y modificar nuestra llamada anchor ().

     echo anchor ('new-page.php', 'New Page', 'Custom Title Message!', '# special_link');

    Aquí estamos pasando un ID de CSS, y recibimos una salida de:

     Nueva pagina

    Si tuviéramos que agregar una variedad de extras, en caso de que quisiera que se abriera en una nueva ventana y tuviera una identificación y clase específicas (¡es poco probable, pero vale la pena mostrar la flexibilidad!), Lo haríamos así:

     $ extras = array ('# special_id', '. special_class', '_ blank'); echo anchor ('new-page.php', 'New Page', 'Custom Title Message!', $ extras);

    Aquí, preestablecemos una variable de matriz llamada extras, solo para mantener el código ordenado, y luego enviarlo junto con la función anchor (). Esto producirá la siguiente salida:

     Nueva pagina

    Mailto Links

    Finalmente, veremos cómo crear enlaces mailto en sus aplicaciones. Haremos una función llamada mailto () que será bastante similar a la función anchor (), con una gran diferencia: implementaremos un cifrado en la salida html para que la dirección de correo electrónico no pueda ser rastreada por spam. arañas, y mantendrá las direcciones de correo electrónico de sus clientes seguras.

    El método que usaremos para ocultar la dirección de correo electrónico utiliza la impresionante función de PHP str_rot13 (), que simplemente toma una cadena y mueve todos los caracteres alfabéticos de trece letras a lo largo del alfabeto. Si alguna vez fuiste a los boy scouts, probablemente recuerdes haberte juntado con tales códigos y haber decidido que probablemente serías un espía cuando crezcas..

    El cifrado emitirá nuestro código de forma confusa, y luego, utilizando una función de "antídoto" de JavaScript, podemos recuperar los caracteres trece lugares del alfabeto y restaurar su significado original. Sin embargo, como esta función es del lado del cliente, el 'antídoto' solo actúa, y el texto vuelve a su estado normal cuando se muestra en una pantalla. Por lo tanto, las arañas, los rastreadores y los spambots, en su mayor parte, no tendrán ni idea de lo que están leyendo..

    Probablemente vale la pena mencionar que existen muchos métodos para ocultar los enlaces de correo electrónico, algunos más seguros que estos, algunos menos. Me gusta usar este método y nunca he visto ningún spam que llegara a ninguno de mis clientes. También vale la pena mencionar que el método JavaScript en sí fue desarrollado por Christoph Burgdorfer, y se ve así:

     

    Esto toma la cadena distorsionada "Njrfbzr frperg fcl pbqr" y desplaza todos los caracteres, para que la visualización en su pantalla se vea como:

     Código espía secreto impresionante

    Sin embargo, si revisa el código fuente, que es lo que verán las arañas y los rastreadores, no verá ninguna mención de este resultado, por lo tanto, permanece oculto..

    No veremos los entresijos de cómo funciona este JavaScript, ya que este es un tutorial de PHP, después de todo. En su lugar, examinaremos cómo podemos implementar esto en nuestra nueva función mailto ().

     función mailto ($ correo electrónico, $ texto, $ título, $ extras) // 1 $ link = 'document.write ("'; // 4 $ data. = $ link; // 5 $ data. = '". reemplace (/ [a-zA-Z] / g, función (c) return String.fromCharCode ((c<="Z"?90:122)>= (c = c.charCodeAt (0) +13)? c: c-26);)); '; $ data. = '"'; if ($ title) // 6 $ data. = 'title ="'. $ título. '"'; else $ data. = 'title ="'. $ texto. '"'; if (is_array ($ extras)) foreach ($ extras como $ rule) $ data. = parse_extras ($ rule); if (is_string ($ extras)) $ data. = parse_extras ( $ extras); $ data. = ">"; $ data. = $ text; $ data. = ""; // 7 return $ data; // 8

    Así que echemos un vistazo a lo que es diferente aquí.

    1. En primer lugar, todavía estamos pasando a través de cuatro variables a esta función, aunque, para fines estéticos, hemos cambiado el nombre de la primera variable a $ email.
    2. Ahora, creamos una nueva variable con el resultado html para el enlace mailto. Vale la pena señalar que hemos agregado una barra invertida antes de las comillas, ya que esta cadena aparecerá más adelante dentro de la función de JavaScript y debemos asegurarnos de que las comillas no lo confundan..
    3. A continuación, implementamos la función str_rot13 () en la variable $ link, para que esté codificada.
    4. Luego podemos crear nuestra variable $ data de retorno, que contiene el JavaScript listo para la salida..
    5. Ponemos nuestro enlace codificado en $ en medio de todo esto, listo para ser traducido.
    6. Ahora que el JavaScript se ha agregado a nuestra variable $ data, el resto de la función le resultará familiar.
    7. Verificamos si se ha agregado una etiqueta de título personalizada, y luego analizamos nuestros $ extras, como antes. Una vez más, cerramos nuestras etiquetas ...
    8. ... y devolver los datos.

    Ahora podemos usar la siguiente sintaxis en nuestro archivo index.php para mostrar nuestro enlace mailto:

     echo mailto ('[email protected] ',' Contact Me ');

    O, si necesitamos elementos personalizados, como antes, podemos agregar más variables:

     $ extras = array ('# special_id', '. special_class', '_ blank'); echo mailto ('[email protected] ',' Contáctame ',' Contacta a tu buen amigo Barry. ', $ extras);

    Conclusión

    Esto concluye nuestra primera incursión en las funciones de ayuda de PHP. Esto es en gran medida la punta del iceberg y, la próxima vez, comenzaremos a revisar algunas herramientas más complejas, en nombre de los ayudantes de formularios..

    La creación y validación de formularios tiene que ser uno de mis esfuerzos favoritos cuando se crean desde cero: hay muchos códigos repetitivos, escrituras minuciosas y posibilidades de errores. Una serie de funciones que generan formularios correctamente estructurados y comprueban los datos de las entradas en busca de direcciones de correo electrónico válidas, contraseñas, longitud de cadenas, etc. pueden ser un verdadero salvavidas. Ah, sí, crear formularios html desde cero no tiene por qué ser tan valioso como pensabas anteriormente.

    Si tiene alguna otra idea de lo que sería realmente útil ver en una función de ayuda de PHP, asegúrese de comentar sus ideas.!