PHP - Consulta Básica sobre declaración de variables en una clase

   
Vista:
Imágen de perfil de Nicolás Ignacio

Consulta Básica sobre declaración de variables en una clase

Publicado por Nicolás Ignacio (16 intervenciones) el 07/06/2015 21:32:02
Estimados, he buscado exactamente lo que necesito saber pero no lo encontré tan especifico, por eso recurro a alguien con más conocimiento que yo. Provengo de la programación estructurada en PHP y me estoy adentrando en POO. Tengo los conceptos claros en cuanto a Clases, Herencia, Objetos, Polimorfismo, Encapsulamiento. Mi duda es más existencial y de orden. Son dos y aquí van:

1) Debo declarar todas las propiedades, variables que usaré en los diferentes métodos de mi Clase? por ejemplo tengo este código:

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
require_once '../class/classConDB.php';
 
class Conceptos{
 
    private $dbh;
    private $pagenum;
    private $pagesize;
    private $start;
    private $sortfield;
    private $sortorder;
    private $queryA;
    private $queryB;
    private $resultA;
    private $resultB;
    private $rows;
    private $filterquery;
    private $total_rows = array();
    private $filas = array();
    private $conceptos = array();
    private $data = array();
 
    public function getConceptosJsonPag($pag, $size){
 
        $this->dbh = new ConDB();
        $this->pagenum = $pag;
        $this->pagesize = $size;
        $this->start = $this->pagenum * $this->pagesize;
        $this->queryA = "SELECT SQL_CALC_FOUND_ROWS * FROM codConceptos LIMIT $this->start, $this->pagesize";
        $this->resultA = $this->dbh->prepare($this->queryA);
        $this->resultA->execute();
        $this->queryB = "SELECT FOUND_ROWS() AS `found_rows`;";
        $this->resultB = $this->dbh->prepare($this->queryB);
        $this->resultB->execute();
        $this->rows = $this->resultB->fetch(PDO::FETCH_ASSOC);
        $this->total_rows = $this->rows['found_rows'];
 
        while($this->filas = $this->resultA->fetch(PDO::FETCH_ASSOC)){
 
            $this->conceptos[] = array(
                "Id" => $this->filas['idCodConceptos'],
                "Concepto" => $this->filas['codConc'],
                "Descripcion" => $this->filas['descripcion'],
                "Contra Concepto" => $this->filas['codContraConcepto'],
                "Debito / Credito" => $this->filas['debitoCredito'],
                "Estado" => $this->filas['estado']
                );
        }
        $this->dbh = null;
 
        $this->data[] = array(
                 'TotalRows' => $this->total_rows,
                 'Rows' => $this->conceptos
                 );
 
        return json_encode($this->data);
 
    }

Como se puede ver, declaré cosas que no son propiedades, como queryA, queryB, total_rows, data, etc. Y luego las accedo con $this->... , entonces no se si está bien hacerlo de esta manera, el código funciona, pero en realidad me parece que no son propiedades específicas de un objeto las querys y los arrays con las filas.

2) Segunda y última consulta, puedo colocar un if para poder decidir qué metodo lanzar de acuerdo a parámetros que me llegan vía $_GET a un archivo intermedio? Especifíco, tengo un archivo llamado transaccionConceptos.php y deseo hacer algo por el estilo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
require_once '../class/classConceptos.php';
 
if(isset($_GET['opcion1'])){
     //lanzo el metodo 1
     $obj = new Conceptos();
     $conceptos = $obj->metodo1();
     echo $conceptos;
}else if(isset($_GET['opcion2'])){
     // lanzo el metodo 2
     $obj = new Conceptos();
     $conceptos = $obj->metodo2();
     echo $conceptos;
}elseif(isset($_GET['opcion3'])){
     // lanzo el metodo 3
     $obj = new Conceptos();
     $conceptos = $obj->metodo3();
     echo $conceptos;
}end if;
 
?>

No se si se entiende lo que quiero expresar, pero por favor si alguien puede dar un poco de luz a esta confusión les agradeceré mucho.

Saludos y buen domingo !!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de xve

Consulta Básica sobre declaración de variables en una clase

Publicado por xve (5523 intervenciones) el 08/06/2015 07:26:43
Hola Nicolás, intento explicarte...

A tu primera pregunta, yo únicamente declaro en la clase las variables que voy a utilizar en los métodos o funciones de la clase o en las clases que hereden. Si una variable vas a utilizarla únicamente en un método, no es necesario declarar dicha variable como una variable de la clase.

A tu segunda pregunta, la respuesta es si... puedes llamar al método que desees según las condiciones que necesites... no tienes que tener mayor problema.

Espero que te haya servido...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Nicolás Ignacio

Consulta Básica sobre declaración de variables en una clase

Publicado por Nicolás Ignacio (16 intervenciones) el 08/06/2015 16:26:18
Estimado! Has sido más que claro y agradezco mucho tu explicación.

En realidad está bien modificado el título, perdón por no haber sido más explícito. Mi duda es sobre buenas prácticas en POO, cuestión que estoy intentando fortalecer, es un poco difícil cuando vienes trabajando hace un tiempo de manera estructurada respetar el paradigma de Objetos.

No es mi intensión escribir código basura o de mala calidad. Pero bueno, ayudas a veces se necesitan.

Con respecto a las consultas han quedado comprendidas, no se explica mucho en los manuales si las propiedades a declarar son solo las que se utilizaran en la mayoría de los métodos o si se declaran todas, no le encontré sentido hacerlo con propiedades de métodos en particular, pero me confundí cuando estudié que las propiedades se declaran y luego se acceden con $this->

Y lo de los condicionales, tampoco lo vi mucho, porque he visto código escrito por terceros para documentar un poco, y no he encontrado lo que yo estoy por hacer, en realidad no se como lo hacen, pero no se me ocurrió otra que los tan queridos IF, y luego encerrar métodos en ellos no me pareció buena práctica. En fin un poco de mezcla mental jajajjaa.

Muchas gracias por tu aporte nuevamente, saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Nicolás Ignacio

Consulta Básica sobre declaración de variables en una clase

Publicado por Nicolás Ignacio (16 intervenciones) el 11/06/2015 17:42:08
Estimado, siguiendo con una consulta de buenas prácticas. Cuántos métodos puedo incluir en una Clase? en realidad quisiera saber cuán extenso puede ser el código dentro de una clase, ya que todos los manuales hablan sobre cómo se crean o implementan pero no he encontrado referencia de la cantidad o si influye en la optima ejecución del programa.

Desde ya nuevamente saludos y gracias!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de jhonatan

Consulta Básica sobre declaración de variables en una clase

Publicado por jhonatan (6 intervenciones) el 14/06/2015 18:47:06
Buenas tardes nicolas en una clase puedes incluir las funciones o metodos que quieras o que necesites, pues la verdad no hay problemas si incluyes muchos eso depende del proyecto que estes realizando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Nicolás Ignacio

Consulta Básica sobre declaración de variables en una clase

Publicado por Nicolás Ignacio (16 intervenciones) el 14/06/2015 20:28:35
Buenas jhonatan ! Muchas gracias por tu respuesta, estoy incursionando en POO, en estos días trataré de implementar el concepto de clases abstractas, interfaces, etc. Es un poco complicado al principio pero por lo que pude investigar en la práctica no se termina utilizando todo tal cual dicen los manuales....

Saludos y gracias nuevamente!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de jhonatan

Consulta Básica sobre declaración de variables en una clase

Publicado por jhonatan (6 intervenciones) el 16/06/2015 16:27:46
Muy bueno eso ,,, me ayudo mucho un framework llamado codeigniter me paree muy completo y oredenado para empezar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Nicolás Ignacio

Consulta Básica sobre declaración de variables en una clase

Publicado por Nicolás Ignacio (16 intervenciones) el 16/06/2015 22:04:52
Si! He escuchado de el, como de Yii, de Laravel y otros. Pero no conviene primero entender bien POO y MVC? porque MVC todavía no lo logro dominar.

Además ese Framework permite realizar aplicaciones del tipo erp o cmr? me refiero a grandes aplicaciones.

Saludos y gracias por este intercambio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar