Programando Con Yii2 Ayudantes

Lo que vas a crear

Si estás preguntando, "¿Qué es Yii?" revisa Introducción al marco Yii, que revisa los beneficios de Yii e incluye una descripción general de Yii 2.0.

¿Qué son los ayudantes??

En la serie Programming With Yii2, guío a los lectores en el uso del Framework Yii2 para PHP. En este tutorial, proporcionaré una breve descripción de los ayudantes. En Yii, los ayudantes son módulos que agrupan bibliotecas comúnmente útiles para la gestión de cadenas, archivos, imágenes, URL y HTML, entre otras cosas, y son fáciles de ampliar..

También compartiré un ejemplo de cómo crear un ayudante en el Meeting Planner, el enfoque de nuestra serie de inicio Envato Tuts +. 

Antes de comenzar, recuerde que trato de participar en las discusiones a continuación. Si tiene alguna pregunta o sugerencia sobre un tema, envíe un comentario a continuación o contácteme en Twitter @reifman. 

Si notó la brecha entre los episodios de la serie Programación Yii, es porque tenía que tener cirugía cerebral el año pasado. Gracias por su paciencia y apoyo, es bueno volver a escribir con regularidad y espero continuar con la cobertura de Yii2..

Bibliotecas Auxiliares Yii2

Esencialmente, los ayudantes son solo módulos de soporte de codificación orientados tópicamente. Aquí hay una lista de los ayudantes provistos como parte de Yii2; esta lista ahora está un poco más actualizada que la documentación y sus menús:

  • ArrayHelper simplifica el manejo de arreglos con funciones como la búsqueda segura de valores, mapeo, fusión, etc..
  • La consola ayuda con la funcionalidad de la línea de comandos, recopila entradas y genera texto en color.
  • FileHelper amplía las funciones básicas de administración de archivos PHP.
  • FormatConverter convierte diferentes formatos, en su mayoría fechas por ahora.
  • HTML genera programáticamente etiquetas HTML de uso común.
  • HtmlPurifier limpia el texto de entrada de los usuarios para mejorar la seguridad.
  • Imagine proporciona funciones de manipulación de imágenes proporcionadas por la extensión yii2-imagine.
  • Inflector proporciona funciones de cadena útiles para transformaciones comunes.
  • Json codifica y decodifica datos JSON.
  • Markdown convierte markdown en HTML.
  • StringHelper extiende las funciones básicas de PHP para cadenas.
  • Url ayuda con la creación programática de URL y recordándolos para la navegación.
  • VarDumper proporciona una característica avanzada var_dump.

Normalmente uso los ayudantes HTML y Url en mis aplicaciones Yii. Y, tal vez recuerden, utilicé el asistente Imagine para construir su inicio con PHP: Configuración de usuario, imágenes de perfil y detalles de contacto para escalar imágenes de perfil cargadas.

Echemos un breve vistazo a algunos de los ayudantes menos conocidos.

ArrayHelper

Como puede ver, ArrayHelper proporciona un puñado de funciones útiles orientadas a matrices..

Por ejemplo, getValue simplifica la búsqueda de valores de claves en matrices complejas:

// trabajando con array $ username = \ yii \ helpers \ ArrayHelper :: getValue ($ _ POST, 'username'); // trabajando con el objeto $ username = \ yii \ helpers \ ArrayHelper :: getValue ($ user, 'username'); // trabajando con la función anónima $ fullName = \ yii \ helpers \ ArrayHelper :: getValue ($ user, function ($ user, $ defaultValue) return $ user-> firstName. ". $ user-> lastName;); / / usando el formato de punto para recuperar la propiedad del objeto incrustado $ street = \ yii \ helpers \ ArrayHelper :: getValue ($ users, 'address.street'); // usando una matriz de claves para recuperar el valor $ value = \ yii \ helpers \ ArrayHelper :: getValue ($ versiones, ['1.0', 'fecha']);

O map () construye una simple matriz de valores clave a partir de una matriz más compleja:

$ array = [['id' => '123', 'name' => 'aaa', 'class' => 'x'], ['id' => '124', 'name' => 'bbb ',' clase '=>' x '], [' id '=>' 345 ',' nombre '=>' ccc ',' clase '=>' y '],]; $ result = ArrayHelper :: map ($ array, 'id', 'name'); // el resultado es: // [// '123' => 'aaa', // '124' => 'bbb', // '345' => 'ccc', //] 

HtmlPurificador

Puede usar HtmlPurifier para mejorar la seguridad de manejo con la entrada del usuario. Por ejemplo, si alguien pega el código de inyección SQL en su formulario como se indicó anteriormente, limpiarlo con HtmlPurifier neutralizará cualquier ataque.

echo HtmlPurifier :: process ($ html); 

Aprovecha la biblioteca de purificador HTML de código abierto..

StringHelper

StringHelper proporciona algunos métodos extendidos para trabajar con cadenas en PHP. Por ejemplo, truncateWords () puede reducir una cadena a un cierto número de palabras pero también preservar el HTML adecuado dentro del resultado.

Construyendo tu propio ayudante

A medida que el Planificador de reuniones, el enfoque de la serie de inicio, se hizo más grande, encontré útil crear un asistente básico que podría usar. Por ahora, combiné todo en uno llamado MiscHelpers.php:

Se puede ver una variedad de métodos que se incluyen de diferentes tipos. Por ejemplo, getDisplayName () devuelve un nombre de usuario, un correo electrónico o cadenas concatenadas de nombre y apellido cuando estén disponibles.

Es útil crearlos una vez en un solo lugar en lugar de reescribirlos de manera diferente en los modelos a medida que se necesitan..

Creé MiscHelpers.php creando un archivo en / common / components y creando una clase que podría invocar a través de la aplicación..

los buildCommandEsta función facilita la creación de enlaces para mensajes de correo electrónico salientes mediante programación, lo que incluye la capacidad de autenticar usuarios con la $ auth_key almacenado en la base de datos.

función estática pública buildCommand ($ meeting_id, $ cmd = 0, $ obj_id = 0, $ actor_id = 0, $ auth_key = ") // to do: crear una cadena de destino local o remoto // nota: si se realiza un cambio, cambie en Message.php devuelve Url :: to (['meeting / command', 'id' => $ meeting_id, 'cmd' => $ cmd, 'actor_id' => $ actor_id, 'k' => $ auth_key, ' obj_id '=> $ obj_id,], true); 

Realmente no hay nada especial en este módulo que no sea el objetivo de los Yii Helpers estándar que describí anteriormente.

En cualquier lugar donde quiera usar las funciones de MiscHelper, puedo usar el siguiente código: