Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    80

    Programmare ad oggetti on PHP

    Affrontando un progetto complesso che necessita di database per memorizzare ogni cosa, mi sono inbattuto in un problema di concetto, derivante dalle mie esperienze di programmatore OO java:

    con una struttura completamente ad oggetti ha senso mettere i vari oggetti in ram o bisogna lavorare direttamente con il db

    o meglio

    come si comporta php?
    ESempio:
    la tabella rubrica nel db tiene tutti i miei contatti, ha senso creare una classe contatto.php, cioè un oggetto per ogni contatto, con rubrica.php che tiene un array di contatto? Che vantaggio ho? tanto devo leggere ogni volta da db...

    a voi la risposta

  2. #2
    il php non è un grande linguaggio OO...anche se con php5 la cosa è molto migliorata. In questo caso non la vedo molto utile...cioé, fai qualche query e via.
    Comunque su freephp ci sono diversi articoli interessanti in proposito.
    GdR Online - http://lenar.it/
    Yesterday is history. Tomorrow is mystery.
    Today is a gift. That's why it's called the present

  3. #3
    le classi non corrispondono ai file, quindi al limite avrai una classe Contatto i cui oggetti sono contenuti nell'oggetto di tipo Rubrica.
    Se poi queste definizioni le metti nel file contatto.php, rubrica.php o pippopippo.php non cambia niente, è una scelta tua.

    Il discorso RAM - DB non l'ho capito sinceramente.
    Uno script quando viene invocato usa delle variabili (in RAM) che verranno distrutte appena termina lo script stesso.

    Se hai bisogno di persistenza dei dati devi per forza utilizzare un database o dei file, ma questo a prescindere dal linguaggio.

    Quindi avrai i tuoi dati in un database e nello script avrai una certa query per estrarli (in RAM quindi) farci delle cose e poi se necessario risalvarli modificati sul DB.

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2003
    Messaggi
    80
    Penso di aver afferrato il concetto.

    Gli oggetti in php muoiono quando lo script termina.

    Quindi per creare un oggetto contenente i campi del db devo per forza leggere ogni volta da db.
    Allora non ho alcun vantaggio a costruire oggetti che contengono solo le variabili del db.
    Quindi non ha senso fare unprogetto articolato con classi che si includono l'una nell'altra, tanto non risparmio tempo di lettura da db, perchè la ram viene deallocata ogni volta he uno script termina.

  5. #5
    php non è (per fortuna) fatto come OO e le sue capacità in questo senza sono molto limitate.
    GdR Online - http://lenar.it/
    Yesterday is history. Tomorrow is mystery.
    Today is a gift. That's why it's called the present

  6. #6
    Originariamente inviato da mcjennis

    Gli oggetti in php muoiono quando lo script termina.
    Sì è così, anzi tutto lo script "muore".
    E' una scelta, discutibile forse, ma voluta.
    La scalabilità in PHP la ottieni ottimizzando il codice ed, eventualmente, con la compilazione del bytecode

    Quindi per creare un oggetto contenente i campi del db devo per forza leggere ogni volta da db.
    Allora non ho alcun vantaggio a costruire oggetti che contengono solo le variabili del db.
    Comunque puoi mettere in pratica il pattern DAO, e qui trovi un package che ti facilita il compito
    http://pear.php.net/package/DB_DataObject

    Quindi non ha senso fare unprogetto articolato con classi che si includono l'una nell'altra, tanto non risparmio tempo di lettura da db, perchè la ram viene deallocata ogni volta he uno script termina.
    Non risparmi tempo di lettura ma mantieni tutti gli altri vantaggi della programmazione object oriented. Ovviamente la complessità del progetto deve essere tale da richiedere lo sforzo iniziale.
    per favore NIENTE PVT TECNICI da sconosciuti

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.