• User

    Problema con la programmazione ad oggetti

    Sto facendo un applicativo in PHP usando la programmazione ad oggetti. Per spiegare il mio problema vi faccio un esempio:

    • Pensate di dovere modellare questa realtà: una fattoria con animali di diverse razze.
    • Pensate ora di creare una classe "animale" e due sottoclassi "mucca" e "anatra"... Sul database c'è una tabella "animali" con il codice animale e la tipologia (mucca o anatra) ed i dati comuni alle due tipologie + una tabella "mucche" con i relativi dati + una tabella "anatre" con altri dati ancora. Queste ultime due tabelle dipendono, mediante una foreign key, dalla tabella "animali".
    • Adesso pensate di dover fare una pagina con un elenco degli animali presenti nella fattoria dove, su ogni rigo c'è il tasto di cancellazione...

    Domanda: essendo la tabella composta da istanze della classe "animale", come posso fare per fare in modo che la cancellazione elimini il relativo record sulla tabella "animali" + quello sulla tabella figlio "mucche"/"anatra" ?
    Posso farcela senza dover interrogare la tipologia sull'oggetto "animale" per poi istanziare la sottoclasse "mucca" o "anatra" ?


  • User Attivo

    Ciao
    da quanto ho capito dovresti realizzare una query delete mettendo in relazione le diverse tabelle con l'id univoco che le collega
    ciao da Danny1975


  • User

    Forse non ho capito bene cosa ti serve, ma da come hai scritto sembra che tutto si possa risolvere con un paio di semplici query-delete. O forse ti serve sapere altro?


  • User Attivo

    Ciao dacdam,
    forse puoi abbattare tutti i passaggi per cancellare i dati in comune e poi quelli particolari di una determinata classe, semplicemente salvando in tabella
    l'id univoco per riconoscere l'animale salvato e la stringa con cui è serializzato l'oggetto.

    La serializzazione di una istanza di classe permette di salvare lo stato dell'oggetto (quindi tutte le sue proprietà con i relativi valori) su filesystem o DB.

    Il risultato della serializzazione è una stringa.

    La serializzazione in PHP avviene tramite le funzioni

    • serialize(una_istanza);
    • unserialize(stringa in cui è stato serializzato un oggetto);

    Se vuoi un esempio, io la ho usata per creare una cache in PHP.
    l'articolo lo puoi leggere qui:
    mirkoagrati.110mb.com/articoli.php?page=Articoli&cat=PHP&art=Cache_Singleton&ext=xml&part=8

    Tieni presente che il link ti porta alla pagina dove puoi vedere in funzione le due funzioni di cui sopra.

    Ciao