Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202

    Getter e Setter che confusione

    Ciao a tutti,

    Espongo la classe e di seguito il mio dubbio

    class pippo{
    private $data;
    private $testo;

    public load($id){
    //carico il mio pippo a fronte dell'id passato
    }

    public setData($val){
    $val_Tmp = ........//formatto la mia data in formato yyyy-mm-dd e se formato non valido restituisco eccezzione

    $this->data = $val_Tmp;
    }

    public getData(){
    $val_Tmp = ........//formatto la mia data in formato dd-mm-yyyy
    return $this->data;
    }

    public setTesto($val){
    $testo_Tmp = ........//faccio il mio trim, converto in utf8, vedo che non ecceda dei caratteri del db, rimuovo caratteri speciali ecc ecc
    $this->data = $val_Tmp;
    }

    public getTesto(){
    $val_Tmp = ........//formatto il testo per l'esposizione html
    return $this->data;
    }

    public function getPippo(){
    //seleziono e restituisco array associativo
    }
    }


    Ipotizzando id avere una classe del genere,
    Se io carico faccio il load dell'oggetto e uso getData() per stamparlo, beneficio della formattazione

    Ma nel caso in cui io faccio il foreach del array ottenuto da getPippo no....

    Ho magari sbagliato a interpretare i getter e setter?

    Nel caso in cui fosse scorretto formattare il dato all'interno del get o set a che livello dovrei farlo?

    Se ci sarà un concorso per lo spacca cogxxxni dell'anno ...... lo vinco io


    Ciao a tutti e Grazie
    Che mestiere difficile.....essere da soli ancora di più

  2. #2
    Secondo me non è corretto trattare e/o modificare in alcun modo i dati all'interno di un getter o di un setter.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Quote Originariamente inviata da Fractals87 Visualizza il messaggio
    Se ci sarà un concorso per lo spacca cogxxxni dell'anno ...... lo vinco io



    cmq, i setter non li tocco, mentre sto usando da un po' i getter per formattarmi alcuni campi come voglio

    for example il mio modello per i prodotti:

    productModel
    Codice PHP:
    class productModel extends entity {

        protected 
    $fields = array( 
            
    'id',
            
    'pid',
            
    'name',
            
    'description',
            
    'price',
            
    'umid',
            
    'weight',
            
    'hide',
            
    'partnercompany',
            
    'formattedPrice',
            
    'umtoken',
            
    'quantity',
            
    'oid',
            
    'total',
            
    'formattedTotal'
        
    );

        public function 
    getFormattedPrice() {
            
    setlocaleLC_MONETARY'it_IT' );
            
    $formatted money_format'%!.2n'$this->values['price'] ). '€';

            if ( !empty( 
    $this->values['umid'] ) ) {
                
    $formatted .= '/' $this->values['umtoken'];
            }

            return 
    $formatted;
        }

        public function 
    getFormattedTotal() {
            
    setlocaleLC_MONETARY'it_IT' );
            return 
    money_format'%!.2n'$this->values['total'] ) . '€';
        }

    sulle viste se io faccio
    Codice PHP:
    <p>Totale prodotto: <?php echo $product->price?></p>
    mi stampa : Totale prodotto: 8.0000
    formattazione del db

    Codice PHP:
    <p>Totale prodotto: <?php echo $product->formattedPrice?></p>
    mi stampa : Totale prodotto: 8,00€
    oppure con unità di misura : Totale prodotto: 8,00€/Kg
    Questa volta, più che un voto.. è favoreggiamento.

  4. #4
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Nel caso di setter e tu hai un $_POST di data italiano a che livello della tua applicazione vai a girare la data per prepararla al db se non nel setter?

    Prendiamo il caso che devi stampare la lista dei prodotti (sto dando per scontato che quello postato sia una lista di prodotti), avrai un metodo che ti restiruisce una array della tua select....
    In quel caso non hai a disposizione il tuo metodo $product->formattedPrice;
    Che mestiere difficile.....essere da soli ancora di più

  5. #5
    ogni riga della tabella 'products' viene trasformata in oggetto productModel

    io la data sul db la salvo nel formato più digeribile da mysql sarà poi in visualizzazione che trasformo la data leggibile

    es non sui prodotti ma per i files ho:
    Codice PHP:
    class fileModel extends entity {

        protected 
    $fields = array( 'id''uid''context''uri''datetime''username' );

        public function 
    getDatetime() {
            return 
    date"d-m-Y H:i:s"strtotime$this->values['datetime'] ) );
        }

    la data che viene inserita nel db è un CURRENT_TIMESTAMP che poi io rielaboro come data italiana..
    Questa volta, più che un voto.. è favoreggiamento.

  6. #6
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    In che modo trasformi ogni riga in oggetto, mi pare molto interessante come approccio.

    Si ma mettiamo che la data arrivi da un $_POST inserita dall'utente, o un qualsiasi campo che necessita di validazione a che livello vai a fare i controlli se non nel setter....
    Che mestiere difficile.....essere da soli ancora di più

  7. #7
    Quote Originariamente inviata da Fractals87 Visualizza il messaggio
    In che modo trasformi ogni riga in oggetto, mi pare molto interessante come approccio.

    Si ma mettiamo che la data arrivi da un $_POST inserita dall'utente, o un qualsiasi campo che necessita di validazione a che livello vai a fare i controlli se non nel setter....
    i controlli si fanno nel controller.. il dato che passi al mapper è già validato e sanitificato o come si scrive...

    l'inserimento a database viene effettuato solamente se sono stati fatti i controlli necessari
    Codice PHP:
    class controller {

      public function 
    index() {
        if ( 
    $_POST['fom-inserimento-dati-submit'] ) {
           
    // controllo i campi

           
    if ( // errori ) {
             // mostro gli errori 
             
    } else {
             
    // posso inserire i campi a db
             
    $this->mapper->insert();
             
    // mostro risultato
           
    }
        }
      }

    per il resto, se hai un mapper:
    Codice PHP:
    class productMapper {

      protected 
    $table "products";

      protected function 
    model( array $data ) {
        return new 
    productModel$data );
      }

      public function 
    fetch$id ) {
        
    // select query
        // bla bla bla

        
    return new model$dataRow );
      }


    spero si capisca
    Questa volta, più che un voto.. è favoreggiamento.

  8. #8
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Si è abbastanza chiaro, non riesco a capire come fai a richiamare la il controller però
    Che mestiere difficile.....essere da soli ancora di più

  9. #9
    Quote Originariamente inviata da Fractals87 Visualizza il messaggio
    Si è abbastanza chiaro, non riesco a capire come fai a richiamare la il controller però
    con un front-controller

    www.sito.it/index.php/modulo/action/params

    modulo = controller
    action = metodo del controller
    Questa volta, più che un voto.. è favoreggiamento.

  10. #10
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    hai ragione che stupido che sono....

    Mi manca solo un pezzettino per capire come fai, poi la discussione finisce nei preferiti...

    Il costruttore di productModel().
    Il tuo dovrebbe accettare un array bidimensionale e non riesco proprio a capire come fai a creare più oggetti istanziandone uno.

    Spero di essermi fatto capire.
    Che mestiere difficile.....essere da soli ancora di più

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.