PHP - Tengo un formulario para subir 5 imagenes, tengo que setear todas en la clase?

 
Vista:
Imágen de perfil de facundo

Tengo un formulario para subir 5 imagenes, tengo que setear todas en la clase?

Publicado por facundo (185 intervenciones) el 20/09/2017 17:14:47
Hola, los algoritmos que tengo funcionan, pero quiero saber si esta bien hecho asi o si hay una mejor manera para que en la clase no tenga que setear tantas variables de fotos con sus respectivos setters y getters.

Esa es mi duda, esta bien si seteo photo2, photo3, photo4, photo5, $photo2Name, $photo3Name, $photo4Name y $photo5Name con sus respectivos setters y getters? O hay otra manera mejor de hacerlo que opinan??

Aca les dejo el codigo reducido a solo las funciones de las imagenes


Clase para productos de comercio:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class CommerceProduct
{
    private $photo1Name;
    private $photo1;
 
//aca seguiria seteando $photo2, $photo3, etc
 
    public function getPhoto()
    {
        return $this->photo1;
    }
    public function setPhoto1($photo1)
    {
        $this->photo1 = $photo1;
        return $this;
    }
    public function getPhoto1Name()
    {
        return $this->photo1->getName();
    }
    public function setPhoto1Name($name)
    {
        return $this->photo1->setName($name);
    }
}
Clase para los archivos (No pongo los setters y getters para que no ocupe espacio, se entiende igual no?)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class File
{
    private $name;
    private $size;
    private $tempName;
 
    public function __construct(array $file)
    {
        $nombreUnico =  md5(time());
        $this->setName($nombreUnico .'.jpg');        // todavia no implemente validaciones de imagen...
        if (isset($file['size'])) $this->setSize($file['size']);
        if (isset($file['tmp_name'])) $this->setTempName($file['tmp_name']);
    }
    public function move($path = '../images')
    {
        $destination = $path . '/' . $this->getName();
        return move_uploaded_file($this->getTempName(), $destination);
    }
}


Acá subo la imagen.
1
2
3
4
5
6
7
8
$conn = new Connection;
if(isset($_POST['merchant'])){
   $prd = new CommerceProduct();
   $file1 = new File($_FILES['photo1']);
    $prd->setPhoto($file1);
    if ($file1->move()) {
            $prd->setPhotoName($file1->getName()); /*aca podria ir tambien $file1->getName()*/
        }

Y acá se inserta en la base de datos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public function addCommerceProduct(CommerceProduct $prd)
    {
        $sql = "INSERT INTO merchant_products(`photo`)
                  VALUES (?)";
        $conn = new Connection;
        $data = [
            1 => $prd->getPhotoName(),
 
        ];
        if ($conn->insert($sql,$data) == false){
            throw new PDOException('Hubo un error al intentar agregar el producto, por favor reintentelo');
        }
        $this->msg = 'Producto agregado';
        return true;
 
    }
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder