Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Visibilità variabili e Zend Framework

    Prima di tutto ciao a tutti,
    adesso vengo alla domanda.

    Da qualche settimana sono alle prese con Zend e con la migrazione del mio intero sito su questo framework. Oggi "smanettando" un pò con gli oggetti mi sono reso conto di una cosa strana. In pratica, io ho definito il modello del database come singoli oggetti, dove ogni campo è una variabile del tipo "protected $_nomecampo" e dove utilizzo dei metodi getter e setter per accedere a queste variabili. Oggi, ho provato a fare una cosa del genere sia nel controller che nella view "$oggetto->campo = valore" e stranamente non mi ha restituito un errore, piuttosto mi ha valorizzato l'oggetto con il nuovo valore. Non capisco come sia possibile da una classe, che in questo caso è quella del controller, poter modificare un attributo di un oggetto di una classe che non è quella del controller e quindi comportandosi come se quell'attributo fosse public.

    E' normale? Sbaglio in qualcosa? Idee?

    Grazie mille, mi auguro di aver trovato una community dove poter discutere di questo magnifico framework.

    Ciao

  2. #2

  3. #3
    class Model_ArticoliRow extends Zend_Db_Table_Row_Abstract
    {
    protected $_titolo;
    public function find($id, Model_ArticoliRow $articolo)
    {
    $result = $this->getDbTable()->fetchRow(
    $this->getDbTable()->select()
    ->where('articoliid = ?',$id));
    $articolo->setTitolo($result->titolo);
    }
    }

    $articoloRow = new Model_ArticoliRow();
    $articolo = $articoloRow->find($this->_request->getParam(2222));
    $articolo->titolo = 3;

    Con setTitolo che viene utilizzato come setter per la variabile protected $_titolo

    Se io faccio un echo di $articolo->titolo subito dopo il metodo find() visualizzo il titolo. Se lo faccio dopo assegnargli un valore come nell'esempio ($articolo->titolo = 3, mi viene visualizzato il nuovo valore.

  4. #4
    Proviamo di nuovo ...

    Posta un semplice codice d'esempio funzionante.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    143
    Originariamente inviato da Vincenzo Raffa
    class Model_ArticoliRow extends Zend_Db_Table_Row_Abstract
    {
    protected $_titolo;
    public function find($id, Model_ArticoliRow $articolo)
    {
    $result = $this->getDbTable()->fetchRow(
    $this->getDbTable()->select()
    ->where('articoliid = ?',$id));
    $articolo->setTitolo($result->titolo);
    }
    }

    $articoloRow = new Model_ArticoliRow();
    $articolo = $articoloRow->find($this->_request->getParam(2222));
    $articolo->titolo = 3;

    Con setTitolo che viene utilizzato come setter per la variabile protected $_titolo

    Se io faccio un echo di $articolo->titolo subito dopo il metodo find() visualizzo il titolo. Se lo faccio dopo assegnargli un valore come nell'esempio ($articolo->titolo = 3, mi viene visualizzato il nuovo valore.
    Suppongo che con $articolo->titolo = 3 invochi il metodo magico __set
    In questo senso é normale.

  6. #6
    Originariamente inviato da kiboo
    Suppongo che con $articolo->titolo = 3 invochi il metodo magico __set
    In questo senso é normale.
    Cavolo, ecco cosa mi ero perso....
    Tnx a lot!

  7. #7
    Originariamente inviato da filippo.toso
    Proviamo di nuovo ...

    Posta un semplice codice d'esempio funzionante.
    Scusa ma pensavo bastasse quello che ho postato. Sicuramente non mi posso mettere a postare tutte le classe di controller e model.
    Cmq tnx, il dubbio è stato chiarito

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 © 2024 vBulletin Solutions, Inc. All rights reserved.