Ciao

ho una prepared statment che fa una select su una tabella
questa select ritorna 20 campi circa
per costruirmi l'oggetto corrispondente a questa query volevo chiamare un metodo esterno al metodo che esegue la select, per fare questo ho scritto questo codice;


Codice PHP:

function get_immobili($utente_id)
{
    include(
"db_config.php");

    include(
"bean/immobile.php");

    
$elenco_immobili = array();

    try {
        
$query "SELECT $immobile_id
                    ,
$immobile_contratto
                    ,
$immobile_categoria
                    ,
$immobile_tipologia
                    ,
$immobile_box
                    ,
$immobile_box_mq
                    ,
$immobile_giardino
                    ,
$immobile_giardino_mq
                    ,
$immobile_prezzo
                    ,
$immobile_prezzo_nascondi
                    ,
$immobile_mq
                    ,
$immobile_numero_locali
                    ,
$immobile_numero_bagni
                    ,
$immobile_bagno_finestrato
                    ,
$immobile_condizioni
                    ,
$immobile_anno_costruzione
                    ,
$immobile_stato_al_rogito
                    ,
$immobile_piano
                    ,
$immobile_numero_piani
                    ,
$immobile_riscaldamento
                    ,
$immobile_spese_condominio_mensili
                    ,
$immobile_balcone
                    ,
$immobile_ascensore
                    ,
$immobile_terrazza
                    ,
$immobile_descrizione
                    ,
$immobile_stato
                    ,
$immobile_regione
                    ,
$immobile_provincia
                    ,
$immobile_comune
                    ,
$immobile_zona
                    ,
$immobile_zona_altro
                    ,
$immobile_goole_maps
                    ,
$immobile_utente_fk    " .
               
"FROM immobile WHERE immobile_utente_fk = ? ORDER BY immobile_data ";
        
//echo "query: " . $query;
        
if ($stmt $mysqli->prepare($query)) {
            
$stmt->bind_param("i",$utente_id);    

            
$stmt->bind_result($immobile_id
                        
,$immobile_contratto
                        
,$immobile_categoria
                        
,$immobile_tipologia
                        
,$immobile_box
                        
,$immobile_box_mq
                        
,$immobile_giardino
                        
,$immobile_giardino_mq
                        
,$immobile_prezzo
                        
,$immobile_prezzo_nascondi
                        
,$immobile_mq
                        
,$immobile_numero_locali
                        
,$immobile_numero_bagni
                        
,$immobile_bagno_finestrato
                        
,$immobile_condizioni
                        
,$immobile_anno_costruzione
                        
,$immobile_stato_al_rogito
                        
,$immobile_piano
                        
,$immobile_numero_piani
                        
,$immobile_riscaldamento
                        
,$immobile_spese_condominio_mensili
                        
,$immobile_balcone
                        
,$immobile_ascensore
                        
,$immobile_terrazza
                        
,$immobile_descrizione
                        
,$immobile_stato
                        
,$immobile_regione
                        
,$immobile_provincia
                        
,$immobile_comune
                        
,$immobile_zona
                        
,$immobile_zona_altro
                        
,$immobile_goole_maps
                        
,$immobile_utente_fk);

            
$stmt->execute();
                
            while (
$stmt->fetch()) {

//la chiamata alla build_immobile si può scrivere senza 
//dove elencare tutti gli attributi? 
//magari una cosa del tipo build_immobile($stmt)
                
$immobile build_immobile($immobile_id
                        
,$immobile_contratto
                        
,$immobile_categoria
                        
,$immobile_tipologia
                        
,$immobile_box
                        
,$immobile_box_mq
                        
,$immobile_giardino
                        
,$immobile_giardino_mq
                        
,$immobile_prezzo
                        
,$immobile_prezzo_nascondi
                        
,$immobile_mq
                        
,$immobile_numero_locali
                        
,$immobile_numero_bagni
                        
,$immobile_bagno_finestrato
                        
,$immobile_condizioni
                        
,$immobile_anno_costruzione
                        
,$immobile_stato_al_rogito
                        
,$immobile_piano
                        
,$immobile_numero_piani
                        
,$immobile_riscaldamento
                        
,$immobile_spese_condominio_mensili
                        
,$immobile_balcone
                        
,$immobile_ascensore
                        
,$immobile_terrazza
                        
,$immobile_descrizione
                        
,$immobile_stato
                        
,$immobile_regione
                        
,$immobile_provincia
                        
,$immobile_comune
                        
,$immobile_zona
                        
,$immobile_zona_altro
                        
,$immobile_goole_maps
                        
,$immobile_utente_fk);
                
$elenco_immobili[] = $immobile;

                



            }
            
$stmt -> close();
    } catch (
Exception $e) {
     
        echo 
"Messaggio: " $e->getMessage() . "";
        echo 
"File: " $e->getFile() . "";
        echo 
"Linea: " $e->getLine();
    }


    
$mysqli -> close();

    return 
$elenco_immobili;
}

function 
build_immobile($immobile_id
                        
,$immobile_contratto
                        
,$immobile_categoria
                        
,$immobile_tipologia
                        
,$immobile_box
                        
,$immobile_box_mq
                        
,$immobile_giardino
                        
,$immobile_giardino_mq
                        
,$immobile_prezzo
                        
,$immobile_prezzo_nascondi
                        
,$immobile_mq
                        
,$immobile_numero_locali
                        
,$immobile_numero_bagni
                        
,$immobile_bagno_finestrato
                        
,$immobile_condizioni
                        
,$immobile_anno_costruzione
                        
,$immobile_stato_al_rogito
                        
,$immobile_piano
                        
,$immobile_numero_piani
                        
,$immobile_riscaldamento
                        
,$immobile_spese_condominio_mensili
                        
,$immobile_balcone
                        
,$immobile_ascensore
                        
,$immobile_terrazza
                        
,$immobile_descrizione
                        
,$immobile_stato
                        
,$immobile_regione
                        
,$immobile_provincia
                        
,$immobile_comune
                        
,$immobile_zona
                        
,$immobile_zona_altro
                        
,$immobile_goole_maps
                        
,$immobile_utente_fk) {

    
$immobile = new immobile();
    
$immobile->set_immobile_id($immobile_id);
    
$immobile->set_immobile_contratto_fk($immobile_contratto_fk);
    
$immobile->set_immobile_categoria_fk($immobile_categoria_fk);
    
$immobile->set_immobile_tipologia_fk($immobile_tipologia_fk);
    
$immobile->set_immobile_box_fk($immobile_box_fk);
    
$immobile->set_immobile_box_mq($immobile_box_mq);
    
$immobile->set_immobile_giardino($immobile_giardino);
    
$immobile->set_immobile_giardino_mq($immobile_giardino_mq);
    
$immobile->set_immobile_prezzo($immobile_prezzo);
    
$immobile->set_immobile_prezzo_nascondi($immobile_prezzo_nascondi);
    
$immobile->set_immobile_mq($immobile_mq);
    
$immobile->set_immobile_numero_locali($immobile_numero_locali);
    
$immobile->set_immobile_numero_bagni($immobile_numero_bagni);
    
$immobile->set_immobile_bagno_finestrato($immobile_bagno_finestrato);
    
$immobile->set_immobile_condizioni_fk($immobile_condizioni_fk);
    
$immobile->set_immobile_anno_costruzione($immobile_anno_costruzione);
    
$immobile->set_immobile_stato_al_rogito_fk($immobile_stato_al_rogito_fk);
    
$immobile->set_immobile_piano($immobile_piano);
    
$immobile->set_immobile_numero_piani($immobile_numero_piani);
    
$immobile->set_immobile_riscaldamento_fk($immobile_riscaldamento_fk);
    
$immobile->set_immobile_spese_condominio_mensili($immobile_spese_condominio_mensili);
    
$immobile->set_immobile_balcone($immobile_balcone);
    
$immobile->set_immobile_ascensore($immobile_ascensore);
    
$immobile->set_immobile_terrazza($immobile_terrazza);
    
$immobile->set_immobile_descrizione($immobile_descrizione);
    
$immobile->set_immobile_stato($immobile_stato);
    
$immobile->set_immobile_regione($immobile_regione);
    
$immobile->set_immobile_provincia($immobile_provincia);
    
$immobile->set_immobile_comune($immobile_comune);
    
$immobile->set_immobile_zona($immobile_zona);
    
$immobile->set_immobile_goole_maps($immobile_goole_maps);
    
$immobile->set_immobile_zona_altro($immobile_zona_altro);
    
$immobile->set_immobile_data($immobile_data);
    
$immobile->set_immobile_annuncio_scaduto($immobile_annuncio_scaduto);
    
$immobile->set_immobile_tipologia_altro_descrizione($immobile_tipologia_altro_descrizione);
    
$immobile->set_immobile_utente_fk($immobile_utente_fk);
    
    return 
$immobile;


volevo sapere se c'è un modo per non dove passare tutti gli attributi al metodo build_immobile, magari il coidice che ho scritto si può scrivere più semplicemente ?