elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  volver a instanciar dentro de la clase
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: volver a instanciar dentro de la clase  (Leído 2,300 veces)
gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
volver a instanciar dentro de la clase
« en: 23 Mayo 2016, 03:06 am »

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
  1. class myClass {
  2.  
  3. private $variable_1;
  4. private $variable_2;
  5. private $variable_3;
  6.  
  7. private function generate($myClass) {
  8.    $this->variable_1 = $myClass->variable_1;
  9.    $this->variable_2 = $myClass->variable_2;
  10.    $this->variable_3 = $myClass->variable_3;
  11. }
  12.  
  13. private function addInformation($stmt) {
  14.    $i = 0;
  15.    $stmt->bind_result($variable_1, $variable_2, $variable_3);
  16.  
  17.    while ($stmt->fetch()) {
  18.        $arrayStaff[$i] = new myClass();
  19.        $arrayStaff[$i]->setVariable1($variable_1);
  20.        $arrayStaff[$i]->setVariable2($variable_2);
  21.        $arrayStaff[$i]->setVariable3($variable_3);
  22.        $i++;
  23.    }
  24.  
  25.    return $arrayStaff;
  26. }
  27.  
  28. public function StaffFromId($id) {
  29.    $mysqli = $this->aet->getAetSql();
  30.    $exit   = FALSE;
  31.  
  32.    if ($stmt = $mysqli->prepare("SELECT * FROM staff WHERE id = ? LIMIT 1")) {
  33.        $stmt->bind_param('i', $id);
  34.        $stmt->execute();
  35.        $stmt->store_result();
  36.  
  37.        if ($stmt->num_rows === 1) {
  38.            $arrayStaff = $this->addInformation($stmt);
  39.            $this->generate($arrayStaff[0]);
  40.            $exit = TRUE;
  41.        }
  42.    }
  43.  
  44.    return $exit;
  45. }
  46.  
  47. public function setVariableX($variable_X) {
  48.    $this->variable_X = $variable_X;
  49. }
  50.  
  51. public function getVariableX() {
  52.    return $this->variable_X;
  53. }
  54.  
  55. }

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

Código
  1. private function addInformation($stmt) {
  2.    $stmt->bind_result($variable_1, $variable_2, $variable_3);
  3.  
  4.    $stmt->fetch();
  5.  
  6.    $this->setVariable1($variable_1);
  7.    $this->setVariable2($variable_2);
  8.    $this->setVariable3($variable_3);
  9. }

O directamente:

Código
  1. $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!


« Última modificación: 23 Mayo 2016, 03:16 am por gAb1 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Volver a ejecutar una clase main
Programación C/C++
Danyel_Casvill 5 7,699 Último mensaje 6 Febrero 2011, 22:49 pm
por BlackZeroX
instanciar una clase externa con php
PHP
soru13 1 2,889 Último mensaje 15 Diciembre 2012, 17:59 pm
por landerzx
Clase dentro de clase css
Desarrollo Web
Ikku 1 2,170 Último mensaje 26 Septiembre 2013, 12:07 pm
por peib0l
Ayuda llamar a una clase y sus métodos dentro de otra clase (Android)
Java
LikeVodka 1 6,247 Último mensaje 19 Abril 2015, 11:22 am
por MNicolas
javascript: seleccionar valor de una clase dentro de un div
Desarrollo Web
JonaLamper 5 4,452 Último mensaje 24 Septiembre 2016, 17:56 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines