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

    Problema definire classi e funzioni - OOP

    Salve a tutti

    ho un dubbio riguardante l'OOP che non sono mai riuscito a togliermi sin da quando ho iniziato a studiare Java, e che ora mi affligge anche per il PHP.

    Quali sono i criteri per capire se conviene passare variabili attraverso chiamate a funzioni piuttosto che passare le stesse ad un costruttore?


    Vi faccio l'esempio specifico. Devo realizzare un form per la registrazione con 3 file:


    1. un controller (equivalente del main in Java)
    2. il form html
    3. la classe Utente, che contiene i vari metodi per validare i campi e creare l'utente nel db



    Ora, prima di tutto ho creato nel controller una funzione che mi permette di eseguire il trim dei campi ottenuti con $_POST e la conversione dei caratteri potenzialmente pericolosi (con htmlspecialchars), e solo dopo creo un istanza della classe Utente che inizializzo con l'array dei vari campi , sui quali eseguirò i controlli (fin qui tutto giusto o devo invertire l'ordine di validazione e conversione?)

    Poi, siccome ho creato un metodo nella classe Utente che richiede anche di verificare la presenza dei campi obbligatori, ho creato l'array $required che a questo punto non credo mi convenga passare al costruttore, dato che si tratta di una parziale ridondanza. Ora, in Java il passaggio per riferimento di variabili primitive non è consentito, e per ovviare al problema bisogna per forza di cose usare i campi di esemplare (quindi passaggio di variabili al costruttore) per tutti i metodi modificatori, mentre per i metodi di accesso si può fare come si vuole.

    In PHP nel caso specifico, in realtà potrei benissimo non passare alcunché al costruttore, e richiamare semplicemente le funzioni passando i parametri per riferimento. Poi, siccome è possibile registrare un utente per volta mi chiedo pure a che serve istanziare un oggetto, potrei benissimo dichiarare tutto static oppure fare persino a meno delle classi (cosa che comunque non voglio per una questione di coerenza col resto del codice). Dunque cosa mi consigliate?
    Ultima modifica di the_indios; 13-06-2015 a 23:25

  2. #2
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    ka risposta è : non esiste risposta. fai come vuoi
    in generale nel costruttore vanno previsti i parametri indispensabili.
    talvolta, raramente, sono così tanti che si passerebbe nell antipattern oggetto che fa tutto

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.