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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  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,185 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,455 Último mensaje 6 Febrero 2011, 22:49 pm
por BlackZeroX
instanciar una clase externa con php
PHP
soru13 1 2,792 Último mensaje 15 Diciembre 2012, 17:59 pm
por landerzx
Clase dentro de clase css
Desarrollo Web
Ikku 1 1,959 Ú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 5,845 Ú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,166 Último mensaje 24 Septiembre 2016, 17:56 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines