Blog de Duplika

Instalación y configuración de Yii framework

Yii es un conocido framework en PHP de alto rendimiento especialmente orientado a aplicaciones web. En este post te vamos a contar como instalarlo en nuestros planes de hosting además de conocer algunas de sus ventajas.

¿Aún no conces Yii?

Te recomiendo que le des un vistazo a su página web oficial o revises la guía definitiva en castellano. Tal como se definen ellos:
Yii es un framework PHP basado en componentes de alta performance para desarrollar aplicaciones Web de gran escala. El mismo permite la máxima reutilización en la programación web y puede acelerar el proceso de desarrollo. El nombre Yii (pronunciado /i:/) es por fácil (en inglés: easy), eficiente (en inglés: efficient) y extensible (en inglés: extensible).

Las ventajas son muchas ya que un framework resumidamente, son herramientas creadas por profesionales (en la mayoría de los casos) en la temática en cuanto a programación respecta. Esto, para nosotros es una enorme ventaja, ya que estas herramientas han sido probadas y arregladas hasta el cansancio. Además, puesto que un framework (como anteriormente mencionaba) son herramientas, nos consolidan de una excelente base. Nosotros podemos pasar directamente a desarrollar y enfocarnos en lo importante de nuestro sitio web (y no formularios de log-in/out o tareas similares).

Para ser un poco más específicos, YII cuenta con herramientas como:

  • Patrón de diseño MVC (modelo vista controlador): Esta es una herramienta muy ventajosa, ya que nos permite mantener nuestro espacio de trabajo sumamente ordenado. Ideal para trabajar con un proyecto que alberga un grupo de programadores (aunque también es excelente práctica utilizarlo cuando estamos solos, por lo que cuando ingresen personas a nuestro trabajo, ya lo tendremos todo ordenado).
  • Orientado a objetos: YII framework, está completamente orientado a objetos, lo cual es una excelente práctica de programación ya que mantiene el código ordenado, limpio (aunque claro, esto depende mucho del programador) y de fácil manipulación/mantenimiento.
  • Validadores para los formularios: Esta es una excelente herramienta que nos provee una forma de validar los datos que se ingresan en un formulario.
    public function rules()
    {
        return array(
            array('title, body, file, categoryId', 'required')
        );
    }
    En donde decimos que los campos title, body, file y categoryId son requeridos (no pueden estar vacíos). Además, si necesitamos una validación propia, podemos hacer algo como:
    public function rules()
    {
        return array(
           array('password', 'passwordStrength', 'strength' => 'weak'),
        );
    }
    
    public function passwordStrength($attribute, $params)
    {
        if ($params['strength'] === 'weak') {
            $pattern = '/^(?=.*[a-zA-Z0-9]).{5,}$/';  
        } elseif ($params['strength'] === 'strong') {
            $pattern = '/^(?=.*\d(?=.*\d))(?=.*[a-zA-Z](?=.*[a-zA-Z])).{5,}$/';  
        }
     
        if(!preg_match($pattern, $this->$attribute)) {
          $this->addError($attribute, 'tu password no es muy segura!');
        }
    }
  • Completo sistema de autentificación y autorización: El cual por cierto, podemos configurar para que trabaje con SESSION o COOKIE (aunque por defecto, se utiliza SESSION).
    $identity = new UserIdentity($username, $password);
    if ($identity->authenticate()) {
        // Logueamos el usuario
        Yii::app()->user->login($identity);
    } else {
        // Hubo un error, por ende lo mostramos
        echo $identity->errorMessage;
    }
    
    // Deslogueamos el usuario
    Yii::app()->user->logout();
    Y ahora pasamos a la clase UserIdentity:

    class UserIdentity extends CUserIdentity
    {
        public function authenticate()
        {
            // Buscamos al usuario en la base de datos
            $record = User::model()->findByAttributes(array('username' => $this->username));
            if ($record === null) {
                // Usuario inexistente
                $this->errorCode = self::ERROR_USERNAME_INVALID;
            } else if ($record->password !== md5($this->password)) {
                // Error en la contraseña
                $this->errorCode = self::ERROR_PASSWORD_INVALID;
            } else {
                // Si llegamos a este punto, entonces decimos que no hay error
                $this->errorCode = self::ERROR_NONE;
            }
    
            return !$this->errorCode;
        }
    }
    
  • Traducción de mensajes de una forma muy simple: Fácil y con excelentes resultados, esta herramienta nos permite crear sitios multi-idioma en muy poco tiempo. Lo único que debemos hacer, es crear los textos en los diferentes idiomas que queremos implementar en el sitio, y YII se encargará de hacer los reemplazos con el método Yii::t().
  • Y lo más importante desde mi punto de vista, es muy seguro y robusto. Podes ver el detalle de cada una de las funcionalidades desde acá.

Instalando YII en Duplika

Este es un proceso sumamente fácil. Lo primero que debemos hacer, es conectarnos al FTP con nuestros datos. Una vez allí, nos dirigimos a la carpeta public_html y procedemos a volcar todo nuestro proyecto. Una vez que finalice, te alegrarás de saber que eso es todo.

Si haces uso de bases de datos, simplemente debes modificar el archivo main.php de la carpeta protected/config/ de la siguiente forma:

'db' => array(
    'connectionString'  => 'mysql:host=localhost;dbname=NOMBRE DE LA BASE DE DATOS',
    'emulatePrepare'    => true,
    'username'          => 'NOMBRE DE USUARIO',
    'password'          => 'CONTRASEÑA',
    'charset'           => 'utf8'
),