Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Curso Avanzado de PHP

Curso Avanzado de PHP

Héctor Benitez

Héctor Benitez

Salvar imágenes en Jobs

8/35
Recursos

PHP es un lenguaje que usa herencia simple, lo cual significa que una clase solo puede heredar de una clase. Una clase no puede heredar de dos o más clases.
En momentos específicos queremos compartir cierta parte de código con una clase pero no queremos necesariamente que forme parte de la cadena de herencia. Para esto existen los Traits que están presentes en otros lenguajes como Ruby

Los Traits son pequeños conjuntos de funcionalidad que podemos inyectar en nuestras clases.

Aportes 11

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Lo que hace en el minuto 4:27 es clave, ya que si no comentan esas líneas, al implementar los Traits en la próxima clase, el trait no va a funcionar.

Uhhh vamos a los traits, son una de las cosas que más me gustan de PHP, en serio, los amo jaja

Los Traits son pequeños conjuntos de funcionalidad que podemos inyectar en nuestras clases.

lastima que este modulo de php me obliguen a usar ese otro IDE, por que la diferencia en código es bastante con visual studio code

Comentario, en el archivo para descargar view/index.twig tienen esta parte del código como muestro en la imagen, la cual esta incorrecta ya que solo debería ser
<img src="{{ job.image }}" alt="" style=“max-width: 100%”>

Hola, de acuerdo al reto de implementación de un Trait para los proyectos, quise mejor retomar el tema de la funcion getDurationAsString que vimos en el curso básico de PHP y lo que hice fue hacer un trait para manejar esto de mostrar los meses de un Job, esto es para que veamos que un trait se puede usar similar a una clase, les quiero dejar el código y me gustaría saber en sus comentarios, si esto que hice es práctico o recomendable. Gracias de antemano:

<?php

namespace App\traits;

trait  HasDefaultMonthsDuration{

    private $numYears;
    private $numtMonths;

    public function getDurationAsString($months)
    {
        $strYears = null;
        $strMonths = null;
        if (empty($months) || $months == 0)
            return null;
        else {
            $this->setNumYears($months);
            $this->setNumtMonths($months);
            if($this->getNumYears() !== null)
                $strYears = $this->numYears > 1 ? "Years" : "Year";
            if($this->getNumtMonths() !== null)
                $strMonths = $this->numtMonths == 1 ? 'Month' : "Months";
            return "Duration: $this->numYears $strYears $this->numtMonths $strMonths ";
        }
    }

    public function getNumYears()
    {
        return $this->numYears;
    }

    public function setNumYears($months): void
    {
        $this->numYears = floor($months/12) == 0 ? null : floor($months/12);
    }

    public function getNumtMonths()
    {
        return $this->numtMonths;
    }

    public function setNumtMonths($months): void
    {
        $this->numtMonths = $months % 12 == 0 ? null : $months % 12;
    }
    
}

Los que vienen del curso pasado o conocen sobre la validaciones con Respect\Validation\Validator Tengo una duda al querer validar una imagen por extención la documentacción muesta el siguiente codigo

v::extension('png')->validate('image.png'); // true

Lo cual yo lo interpreto dentro del codigo de esta forma

$jobValidator =
             v::key('title', v::stringType()->notEmpty())
             ->key('description', v::stringType()->notEmpty())
                ->key('valoresPuestos',v::extension('jpeg') ); // true);

valoresPuestos

  • logo

  • logo.jpeg

En ambos casos me da error

PHP es un lenguaje que usa herencia simple, lo cual significa que una clase solo puede heredar de una clase. Una clase no puede heredar de dos o más clases.

En momentos específicos queremos compartir cierta parte de código con una clase pero no queremos necesariamente que forme parte de la cadena de herencia. Para esto existen los Traits que están presentes en otros lenguajes como Ruby

Se pueden guardar las imágenes por subcarpetas dentro de Uploads para tener una referencia a que pertenece y asi proveer las imágenes tanto para Jobs como para el perfil

Los Traits nos pueden ayudar a facilitar ciertas funcionalidades a otras clases que también requieran usarla