DEV Community

Cover image for Cómo superar una prueba técnica PHP - tercera parte
Roberto Manchado
Roberto Manchado

Posted on

Cómo superar una prueba técnica PHP - tercera parte

Una vez creada nuestra pequeña arquitectura, tan solo tenemos que implementar las clases que modificaran la prioridad de visualización de la película.

En este ejemplo, se implementa la clase estreno, que determina si la película es de tipo estreno, entonces variará la propiedad prioridad.

amespace App\ArrayMap\Estreno;

use App\Interfaces\RuleInterface;
use App\Rule;

class Estreno extends Rule implements RuleInterface
{
    const prioridadMin  = 0;

    public function map(array $arrayElements) : array
    {
        return array_map(function ($e) {
            if ($e->bloqueante()) {
                // según esten definidos los requisitos
                $e->prioridad = $e->prioridad - 2;
                if ($e->prioridad < self::prioridadMin) {
                    $e->prioridad = self::prioridadMin;
                }
            }
            return $e;
        }, $arrayElements);
    }
}
Enter fullscreen mode Exit fullscreen mode
namespace App\ArrayMap\Descripcion;

use App\Interfaces\RuleInterface;
use App\Rule;

class Descripcion extends Rule implements RuleInterface
{
    const prioridadMin  = 0;

    public function map(array $arrayElements) : array
    {
        return array_map(function ($e) {
            // según esten definidos los requisitos
            if (strlen($e->descripcion()) > 100 && strlen($e->descripcion()) < 500) {
                $e->prioridad = $e->prioridad - 0.5 ;
            } elseif (strlen($e->descripcion()) > 500) {
                $e->prioridad = $e->prioridad - 0.7 ;
            } elseif (strpos($e->descripcion(), '</a>') !== false) {
                $e->prioridad = $e->prioridad - 0.5 ;
            }

            if ($e->prioridad < self::prioridadMin) {
                $e->prioridad = self::prioridadMin;
            }
            return $e;
        }, $arrayElements);
    }
}
Enter fullscreen mode Exit fullscreen mode

Dejo que termines la clase asociada al título.
Como ves, superar una prueba técnica PHP es de lo más entrenido. Las variantes como ya comenté, suelen tener además tests unitarios cuyas aserciones, deben ser cumplidas todas. En esto último, el nivel de precisión debe ser casi excelente.

Espero que hayais disfrutado con este post, al igual que yo escribíendolo. Podeís clonar el repositorio
de reglas en Rules-Filter

Parte 2

Os dejo un librito recomendado. Que aproveche !

Arquitectura Limpia

fdo: roberto manchado

Discussion (0)