Helpers

Nota: Esta sección está en desarrollo.

Yii ofrece muchas clases que ayudan a simplificar las tareas comunes de codificación, como manipulación de string o array, generación de código HTML, y más. Estas clases helper están organizadas bajo el namespace yii\helpers y son todo clases estáticas (lo que significa que sólo contienen propiedades y métodos estáticos y no deben ser instanciadas).

Puedes usar una clase helper directamente llamando a uno de sus métodos estáticos, como a continuación:

use yii\helpers\Html;

echo Html::encode('Test > test');

Nota: Para soportar la personalización de clases helper, Yii separa cada clase helper del núcleo en dos clases: una clase base (ej. BaseArrayHelper) y una clase concreta (ej. ArrayHelper). Cuando uses un helper, deberías sólo usar la versión concreta y nunca usar la clase base.

Clases Helper del núcleo

Las siguientes clases helper del núcleo son proporcionadas en los releases de Yii:

  • ArrayHelper
  • Console
  • FileHelper
  • Html
  • HtmlPurifier
  • Image
  • Inflector
  • Json
  • Markdown
  • Security
  • StringHelper
  • Url
  • VarDumper

Personalizando Las Clases Helper

Para personalizar una clase helper del núcleo (ej. [[yii\helpers\ArrayHelper]]), deberías crear una nueva clase extendiendo de los helpers correspondientes a la clase base (ej. [[yii\helpers\BaseArrayHelper]]), incluyendo su namespace. Esta clase será creada para remplazar la implementación original del framework.

El siguiente ejemplo muestra como personalizar el método [[yii\helpers\ArrayHelper::merge()|merge()]] de la clase [[yii\helpers\ArrayHelper]]:

<?php

namespace yii\helpers;

class ArrayHelper extends BaseArrayHelper
{
    public static function merge($a, $b)
    {
        // tu implementación personalizada
    }
}

Guarda tu clase en un fichero nombrado ArrayHelper.php. El fichero puede estar en cualquier directorio, por ejemplo @app/components.

A continuación, en tu script de entrada de la aplicación, añade las siguientes lineas de código después de incluir el fichero yii.php para decirle a la clase autoloader de Yii que cargue tu clase personalizada en vez de la clase helper original del framework:

Yii::$classMap['yii\helpers\ArrayHelper'] = '@app/components/ArrayHelper.php';

Nota que la personalización de clases helper sólo es útil si quieres cambiar el comportamiento de una función existente de los helpers. Si quieres añadir funciones adicionales para usar en tu aplicación puedes mejor crear un helper por separado para eso.