Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    fastner
    Guest

    OO totale o OO parziale?

    sto iniziando ad usare l'oop di php 5, trovo la programmazione fatta così estremamente divertente perchè hai un codice pulito e immediato, facile da leggere eccetera. utilissimo il destruct, per ripulire la memoria.. insomma tutto ok

    ma.. mi chiedo... non è che con la programmazione oop appesantisco solamente il codice?
    io purtroppo credo di si.... ad occhio la programmazione php standard dovrebbe essere più rapida, cioè il motore di php esegue una procedura nell'ordine dato dal programmatore e finisce li, mentre con l'utilizzo delle classi php deve "capire" delle cose in più.

    riconosco che le classi possano essere utilissime in diversi casi. per cui dovrei crearmi solo classi veramente necessarie o devo lavorare completamente con le classi secondo voi?

    per fare un esempio

    class database_connessione
    {
    public $connessione;

    function __construct()
    {
    $this->connessione = mysql_connect() or exit();
    mysql_select_db() or exit();
    }

    function __destruct()
    {
    mysql_close($this->connessione);
    unset($this->connessione);
    }
    }

    questa è la mia classe "database_connessione" che ho deciso di separare dalla classe database_query in modo da poter ottenere con l'oggetto di quest'ultima, la cancellazione immediata della memoria dei dati estratti da mysql nonchè degli array dei risultati con il __destruct

    class database_query
    {
    public $query;

    function __construct($sql, $connessione)
    {
    $this->query = mysql_query($sql, $connessione) or exit()
    return($this->query);
    }

    function __destruct()
    {
    mysql_free_result($this->query);
    unset($this->query);
    }
    }


    il punto è... la prima classe... a che cavolo mi serve se io ho bisogno di una sola connessione mysql nel mio script?

    non sono più tanto convinto che la programmazione ad oggetti sia cosa buona...
    cercate di farmi cambiare idea

  2. #2

    Re: OO totale o OO parziale?

    Originariamente inviato da fastner

    il punto è... la prima classe... a che cavolo mi serve se io ho bisogno di una sola connessione mysql nel mio script?
    Se dovrai cambiare database (da mysql a un altro) ti sarà comodo poter modificare solo la prima classe

    $this->connessione = mysql_connect() or exit();
    mysql_select_db() or exit();
    Questi exit comunque non sono molto utili, dovresti gestire l'errore in altro modo...magari servendoti delle eccezioni di PHP5



    non sono più tanto convinto che la programmazione ad oggetti sia cosa buona...
    cercate di farmi cambiare idea
    E' pacifico che programmare procedurale è più prestazionale, infati nessuno ti obbliga a programmare object oriented. Se decidi di farlo è perchè ne senti la necessità.
    Se senti la necessità di un codice ben organizzato e per caso ti accorgi di problemi nelle prestazioni (se mai ti capiterà di averne) puoi contare sui compilatori di bytecode
    http://freephp.html.it/articoli/view...p?id=117&pag=3

    Convincerti? A parole è dificile convincere una persona che uno stile è migliore di un altro però...trovi la cosa anche in queste FAQ
    http://freephp.html.it/articoli/view...p?id=146&pag=2
    per favore NIENTE PVT TECNICI da sconosciuti

  3. #3
    fastner
    Guest

    Re: Re: OO totale o OO parziale?

    Originariamente inviato da Fabio Heller
    Se dovrai cambiare database (da mysql a un altro) ti sarà comodo poter modificare solo la prima classe
    a questo non ci avevo pensato... certo però cambiare una riga dell'include della connessione non sarebbe molto più difficile

    potrei avere bisogno di suddividere il mio lavoro su + server mysql? per "smistare" il lavoro? o è peggio?
    cmq assolutamente fuori dalle necessità dello script
    alla fine scrivere

    $connessione = new database_connessione();
    è identico a scrivere
    $connessione = mysql_connect();
    anzi sicuramente è più rapido.. tra l'altro ho letto che lo zend 2 non è ancora ottimizzato bene sulle prestazioni... e così resterà per un po...
    in questo caso non mi serve neanche il destruct, perchè anzichè scrivere unset($connessione); per avviare il __destruct
    mi basta fare mysql_close($connessione); e proprio ad essere precisini ci metto anche unset($connessione); (anche se mysql_close dovrebbe averlo già fatto)..

    Originariamente inviato da Fabio Heller
    Questi exit comunque non sono molto utili, dovresti gestire l'errore in altro modo...magari servendoti delle eccezioni di PHP5
    credo tu abbia ragione, ma utilizzandoli come oggetti pensavo che funzionassero allo stesso modo degli exit normali... pensa che mi sono già scritto parecchie classi e non le ho ancora testate... ne devo scrivere ancora altre per far funzionare tutto.
    cosa sono le eccezioni di php5 comunque? try e catch?



    Originariamente inviato da Fabio Heller
    E' pacifico che programmare procedurale è più prestazionale, infati nessuno ti obbliga a programmare object oriented. Se decidi di farlo è perchè ne senti la necessità.
    sai cos'è... nella programmazione procedurale ti dimentichi di fare delle cose importanti, tipo unsettare le variabili inutilizzate, o le variabili usate al volo, tipo in un ciclo come questo...

    $x=0;
    while () {
    x++;
    }
    // unset($x); facile da dimenticare

    pulire le query mysql, ecc. la programmazione con le classi fa tutto al posto tuo, basta che scrivi attentamente il codice una volta sola e poi vai tranquillo e soprattutto veloce!...

    Originariamente inviato da Fabio Heller
    Se senti la necessità di un codice ben organizzato e per caso ti accorgi di problemi nelle prestazioni (se mai ti capiterà di averne) puoi contare sui compilatori di bytecode
    http://freephp.html.it/articoli/view...p?id=117&pag=3
    non ne ho bisogno adesso e probabilmente non ne avrò mai bisogno.. il problema non è la lentezza di php, ma una mia maniacale attenzione nello scrivere un codice perfetto

    Originariamente inviato da Fabio Heller
    Convincerti? A parole è dificile convincere una persona che uno stile è migliore di un altro però...trovi la cosa anche in queste FAQ
    http://freephp.html.it/articoli/view...p?id=146&pag=2
    ho già letto forse dovrei utilizzare solo classi necessarie per facilitarmi il lavoro... il tuo parere qual'è su questo punto? tu che metodo usi?

  4. #4

    Re: Re: Re: OO totale o OO parziale?

    Originariamente inviato da fastner
    a questo non ci avevo pensato... certo però cambiare una riga dell'include della connessione non sarebbe molto più difficile
    No, ma in generale è sempre bene scomporre il codice in prozioni autosufficienti e picole porzioni autosufficienti. Questo vale non solo per la programmazione a oggetti, è una buona norma anche se utilizzi librerie di funzioni


    potrei avere bisogno di suddividere il mio lavoro su + server mysql? per "smistare" il lavoro? o è peggio?
    cmq assolutamente fuori dalle necessità dello script
    alla fine scrivere


    cosa sono le eccezioni di php5 comunque? try e catch?
    Esatto


    ho già letto forse dovrei utilizzare solo classi necessarie per facilitarmi il lavoro... il tuo parere qual'è su questo punto? tu che metodo usi?
    Se si tratta di progetti grossi e ho il tempo di fare le cose per bene uso la programmazione a oggetti.
    Negli altri casi dipende. Comunque vada cerco di mantenere le cose più semplici possibile
    per favore NIENTE PVT TECNICI da sconosciuti

  5. #5
    fastner
    Guest

    Re: Re: Re: Re: OO totale o OO parziale?

    Originariamente inviato da Fabio Heller

    Esatto
    come potrei usare try e catch?
    non c'è un articolo?

    continuerò con il metodo che ho adottato fin'ora...
    ovvero manterò anche le classi non proprio utilissime
    ciao e grazie per i consigli...

  6. #6
    fastner
    Guest
    non c'entra niente con il thread, ma secondo voi funzionano le classi con i metodi scritti senza parentesi graffe?

    cioè

    private function asd($blabla)
    return $blabla;

    anzichè


    private function asd($blabla)
    {
    return $blabla;
    }

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.