volver a instanciar dentro de la clase

Iniciado por gAb1, 23 Mayo 2016, 03:06 AM

0 Miembros y 1 Visitante están viendo este tema.

gAb1

Tengo una pequeña duda sobre una clase. Me gustaría saber por qué es necesario volver a instanciar la clase para llamar a los setters y por qué se usa el while si hay un LIMIT 1 en la query además de que no veo necesidad para un array:

Código (php) [Seleccionar]
class myClass {

private $variable_1;
private $variable_2;
private $variable_3;

private function generate($myClass) {
   $this->variable_1 = $myClass->variable_1;
   $this->variable_2 = $myClass->variable_2;
   $this->variable_3 = $myClass->variable_3;
}

private function addInformation($stmt) {
   $i = 0;
   $stmt->bind_result($variable_1, $variable_2, $variable_3);

   while ($stmt->fetch()) {
       $arrayStaff[$i] = new myClass();
       $arrayStaff[$i]->setVariable1($variable_1);
       $arrayStaff[$i]->setVariable2($variable_2);
       $arrayStaff[$i]->setVariable3($variable_3);
       $i++;
   }

   return $arrayStaff;
}

public function StaffFromId($id) {
   $mysqli = $this->aet->getAetSql();
   $exit   = FALSE;

   if ($stmt = $mysqli->prepare("SELECT * FROM staff WHERE id = ? LIMIT 1")) {
       $stmt->bind_param('i', $id);
       $stmt->execute();
       $stmt->store_result();

       if ($stmt->num_rows === 1) {
           $arrayStaff = $this->addInformation($stmt);
           $this->generate($arrayStaff[0]);
           $exit = TRUE;
       }
   }

   return $exit;
}

public function setVariableX($variable_X) {
   $this->variable_X = $variable_X;
}

public function getVariableX() {
   return $this->variable_X;
}

}


Si no me equivoco lo siguiente también funciona y no hace falta tener 2 funciones que hacen lo mismo, no?

Código (php) [Seleccionar]
private function addInformation($stmt) {
   $stmt->bind_result($variable_1, $variable_2, $variable_3);

    $stmt->fetch();

   $this->setVariable1($variable_1);
   $this->setVariable2($variable_2);
   $this->setVariable3($variable_3);
}


O directamente:

Código (php) [Seleccionar]
$this->variable_1 = $variable_1;

Mi conocimiento todavia es limitado por lo que ¿hay alguna razón por la que se hizo eso asi? ¿Tal vez implementar más cosas que necesiten eso? La clase la hizo un amigo con el que no he podido volver a hablar.

Gracias!