Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

constructores mal usados?

Estas en el tema de constructores mal usados? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola gente! tengo una duda. Estuve viendo muchos códigos para aprender a usar en forma correcta de los constructores. Según entiendo deben ser usados para ...
  #1 (permalink)  
Antiguo 29/09/2009, 12:09
 
Fecha de Ingreso: febrero-2008
Ubicación: Bahia Blanca
Mensajes: 173
Antigüedad: 16 años, 2 meses
Puntos: 7
constructores mal usados?

Hola gente! tengo una duda.

Estuve viendo muchos códigos para aprender a usar en forma correcta de los constructores. Según entiendo deben ser usados para incicializar propiedades (atributos) del objeto. Pero me confunde mucho que cuando leo códigos ajenos hay constructores que incluyen código con funciones que no tienen nada que ver. Me dá que pensar si yo entendí mal o si los códigos ejemplo que leo están mal hechos.

Por ejemplo, hace poco estaba viendo el codigo de jobberbase.org (app/includes/class.JobberSettings.php) y ví una linea como ésta:

Código PHP:
<?php


class JobberSettings
{
    var 
$mSettings false;
        
    function 
__construct()
    {
        global 
$db;
        
        
$sql 'SELECT * FROM '.DB_PREFIX.'settings ORDER BY id ASC';
        
$result $db->query($sql);
        
        
$settings = array();
        
        while (
$row $result->fetch_assoc())
        {
            
// Setting temporary variable names for the 'value' and 'fieldtype' fields
            
$value $row['value']; 
            
$data_type $row['data_type'];
            
$input_type $row['input_type'];

etc
Bueno, en este caso es aceptable el hecho de hacer una consulta dentro del constructor, porque esa consulta es solo para tomar datos de la db para inicializar los atributos. Pero no convendría hacerlo en un método aparte? Es correcto ésto?


Gracias.
  #2 (permalink)  
Antiguo 29/09/2009, 12:13
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: constructores mal usados?

lo que distingue a un constructor de cualquier método es que se ejecuta cuando la instancia de la clase es creada, eso no lo puedes hacer con otro miembro ya que al llamarlo la clase ya se construiría, no tiene nada de raro que puedas hacer otras cosas en el constructor.

el detalle es que php poco a poco se va acercando a los modernos lengujes de POO, por ejemplo en C# puedes hacer muchas cosas desde el constructor como impedir que se instancie la clase por ejemplo.
  #3 (permalink)  
Antiguo 29/09/2009, 12:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: constructores mal usados?

De hecho en PHP puedes hacer eso mismo, lanzas una excepción dentro del constructor y con eso evitas que se construya y aparte tienes control de flujo de la aplicación.

Saludos.
  #4 (permalink)  
Antiguo 29/09/2009, 20:13
 
Fecha de Ingreso: febrero-2008
Ubicación: Bahia Blanca
Mensajes: 173
Antigüedad: 16 años, 2 meses
Puntos: 7
Respuesta: constructores mal usados?

Gracias, ahora me quedó mas claro.

saludos
  #5 (permalink)  
Antiguo 30/09/2009, 07:01
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: constructores mal usados?

Que tal Shock!

Estoy totalmente de acuerdo, es un desastre como está diseñada la clase y el uso que se le da al constructor y perfectamente habría que abstraer esa funcionalidad en un nuevo método.

Lo que hay que tener en cuenta que un constructor con sus parámetros estamos definiendo qué es lo básico y mínimo para poder crear la instancia. Si esto no se cumple, no se puede crear (y eso refuerza el diseño).

PD: amén de todo eso, está usando sintaxis de PHP4, variables globales, etc (todo lo que no deberías usar).

Saludos!
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #6 (permalink)  
Antiguo 02/10/2009, 12:59
 
Fecha de Ingreso: febrero-2008
Ubicación: Bahia Blanca
Mensajes: 173
Antigüedad: 16 años, 2 meses
Puntos: 7
Respuesta: constructores mal usados?

Bueno, pero al menos es un ejemplo de lo que no se debe hacer, útil al fin. Creo que ya le tomé la mano. Gracias nuevamente.



Cita:
Iniciado por enriqueplace Ver Mensaje
Que tal Shock!

Estoy totalmente de acuerdo, es un desastre como está diseñada la clase y el uso que se le da al constructor y perfectamente habría que abstraer esa funcionalidad en un nuevo método.

Lo que hay que tener en cuenta que un constructor con sus parámetros estamos definiendo qué es lo básico y mínimo para poder crear la instancia. Si esto no se cumple, no se puede crear (y eso refuerza el diseño).

PD: amén de todo eso, está usando sintaxis de PHP4, variables globales, etc (todo lo que no deberías usar).

Saludos!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:15.