Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Domanda sulla programmazione oggetti

    Ciao,
    ho trovato questo codice:

    class consegnainsede {
    var $code, $title, $description, $icon, $enabled;

    // class constructor
    function consegnainsede() {
    global $order;

    $this->code = 'consegnainsede';
    //inizializza le altre variabili title, description ecc.
    $this->sort_order = MODULE_SHIPPING_CONSEGNAINSEDE_SORT_ORDER;
    }

    e poi, tra le funzioni
    function quote($method = '') {
    $this->quotes = array('id' => $this->code, //ecc ecc
    }

    in sostanza, nel costruttore inizializza una variabile $this->sort_order che però non è dichiarata tra le variabili di classe..

    e nella funzione quote() tira fuori l'array $this->quotes, senza che questo sia stato nè dichiarato come variabile di classe nè che sia stato inizializzato nel costruttore

    E' un codice scritto male o è una procedura corretta? Le variabili non dovrebbero essere tutte inizializzate nel costruttore, tranne quelle passate per riferimento come argomento della funzione?

  2. #2
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568

    Re: Domanda sulla programmazione oggetti

    Originariamente inviato da l'evangelista
    E' un codice scritto male o è una procedura corretta? Le variabili non dovrebbero essere tutte inizializzate nel costruttore, tranne quelle passate per riferimento come argomento della funzione?
    E' una procedura corretta. Non c'è l'obbligo della dichiarazione delle variabili per la gestione dinamica che viene fatta di queste. E meno che meno le variabili vengono tutte inizializzate nel costruttore.
    "Nei prossimi tre anni col mio governo vogliamo vincere anche il cancro, che colpisce ogni anno 250.000 italiani e riguarda quasi due milioni di nostri concittadini"

  3. #3

    Re: Re: Domanda sulla programmazione oggetti

    Originariamente inviato da chris
    E' una procedura corretta. Non c'è l'obbligo della dichiarazione delle variabili per la gestione dinamica che viene fatta di queste. E meno che meno le variabili vengono tutte inizializzate nel costruttore.
    Ok quindi nel costruttore inizializzo solo le variabili che necessitano di un valore. Pensavo che invece fosse buona norma dare a tutte le variabili un valore iniziale, sia pure null o 0.
    Però non capisco perchè le variabili inizializzate nel costruttore sono state tutte dichiarate prima, e sort_order no :master:

  4. #4
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568

    Re: Re: Re: Domanda sulla programmazione oggetti

    Originariamente inviato da l'evangelista
    Ok quindi nel costruttore inizializzo solo le variabili che necessitano di un valore. Pensavo che invece fosse buona norma dare a tutte le variabili un valore iniziale, sia pure null o 0.
    Però non capisco perchè le variabili inizializzate nel costruttore sono state tutte dichiarate prima, e sort_order no :master:
    Scelta del programmatore.
    Trattando per massimi sistemi e in linea teorica la programmazione in generale e quella ad oggetti in particolare dovrebbero prevedere la dichiarazione obbligatoria delle variabili. Nell'utilizzo spicciolo sono inutili, tranne per il fatto che potresti rimanere abituato a questa pratica e avere problemi di adattamento passando a linguaggi che ti obbligano a definire le variabili.
    Dal punto di vista pratico è inutile dichiarare una variabile con un valore inizializzato standard per comprendere dal codice se è stata valorizzata o meno: esiste il costrutto isset() che ti permette direttamente di determinare se è stata dichiarata.
    "Nei prossimi tre anni col mio governo vogliamo vincere anche il cancro, che colpisce ogni anno 250.000 italiani e riguarda quasi due milioni di nostri concittadini"

  5. #5
    Più che scelta potrebbe essere una dimenticanza (magari ha dovuto apportare modifiche in un secondo momento e quel sort_order l'ha aggiunto "al volo")? Perchè non riesco a capire a questo punto a cosa serve dichiarare le variabili di classe.

    Ho sempre visto nelle variabili di classe, al di là della dichiarazione obbligatoria o meno, un concetto logico.
    Sono le caratteristiche di un oggetto, vanno dichiarate come tali, sopratutto per leggibilità del codice (magari con un bel commentino a fianco).

  6. #6
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    Dichiarare le variabili non serve a niente nel php. Come non serve a niente quando lo utilizzi in modalità procedurale, così non serve a niente quando lo utilizzi in modalità ad oggetti.

    L'unico vantaggio del dichiarare le variabili interne consiste nel poter dare loro un valore di default senza dover passare per una funzione.
    "Nei prossimi tre anni col mio governo vogliamo vincere anche il cancro, che colpisce ogni anno 250.000 italiani e riguarda quasi due milioni di nostri concittadini"

  7. #7
    Originariamente inviato da chris
    Dichiarare le variabili non serve a niente nel php. Come non serve a niente quando lo utilizzi in modalità procedurale, così non serve a niente quando lo utilizzi in modalità ad oggetti.

    L'unico vantaggio del dichiarare le variabili interne consiste nel poter dare loro un valore di default senza dover passare per una funzione.
    Ragionamento che vale nel caso di script di piccola/media grandezza, visto che l'interprete PHP ogni volta che incontra una variabile, va a creare il suo spazio in memoria.

    Nel caso invece di script molto grandi, e che vanno ad eseguire numerose operazioni, il concetto non è più valido.

    Il dichiarare prima le variabili correttamente - andando quindi a dire anche correttamente il TIPO di variabile - abbasse i tempi di esecuzione, visto che poi, successivamente, l'interprete avrà già gli spazi allocati per le variabili.

    Non a caso, i linguaggi "più grossi" di programmazione, obbligano alla dichiarazione preventiva delle variabili (addirittura anche nelle variabili-parametro delle funzioni).
    [ DarCas The Architect ]
    [ The DarCas Of Blog ]
    Chuck Norris riesce a trovare un pagliaio dentro a un ago
    :maLOL:

  8. #8
    in effetti chris m' hai stravolto tutto ... cioe' , le variabili in php vanno sempre dichiarate, che e' sta mania / amore per i notice ???

    inoltre scrivere in modo sensato significa avere padronanza dell' applicativo , shiaffare variabili a caso significa programmare male, sia a livello concettuale che a livello di esecuzione ...

    in teoria tu dovresti gia' e sempre sapere quali e quante variabili ti servono in un oggetto e quali no ...
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  9. #9
    Originariamente inviato da andr3a
    in effetti chris m' hai stravolto tutto ... cioe' , le variabili in php vanno sempre dichiarate, che e' sta mania / amore per i notice ???

    inoltre scrivere in modo sensato significa avere padronanza dell' applicativo , shiaffare variabili a caso significa programmare male, sia a livello concettuale che a livello di esecuzione ...

    in teoria tu dovresti gia' e sempre sapere quali e quante variabili ti servono in un oggetto e quali no ...
    chris diceva che non c'era necessità di dichiararle come variabili di classe, e quindi è possibile inizializzarle ovunque (costruttore o altra funzione).
    Non che possono essere utilizzate senza inizializzarle (infatti quella classe che ho postato non genera alcun notice).

  10. #10
    Originariamente inviato da l'evangelista
    chris diceva che non c'era necessità di dichiararle come variabili di classe, e quindi è possibile inizializzarle ovunque (costruttore o altra funzione).
    il php e' troppo permissivo, non avrebbe tanta utenza "facile" se non fosse stato cosi' ... e' vero che puoi istanziarle ovunque ma e' anche molto piu' vero quello che ha detto Dar Cas ... cioe' , va bene non ottimizzare le virgole pero' o uno dichiara le variabili e sa quali e quante gliene servono e anche di che tipo, oppure non le dichiari affatto no ???

    per dire che il tizio di quella classe si e' probabilmente scordato ... scordarsi di qualcosa non fa parte della programmazione ... mentre se era un "frega niente faccio come mi pare" allora non si capisce perche' ne ha dichiarate , senza tipo, solo alcune e non tutte ...

    morale: se vuoi scrivere php come si deve bisogna che ci ragioni prima di scrivere, se vuoi scrivere php come mangi allora e' inutile che fai finta di ragionarci sopra ... poi ognuno e' liberissimo di scrivere codice come meglio crede, ma magari sarebbe sempre meglio seguire almeno una logica, anche volendo personale, no ?


    Originariamente inviato da l'evangelista
    Non che possono essere utilizzate senza inizializzarle (infatti quella classe che ho postato non genera alcun notice).
    il mio e' in discorso piu' generico , riferito alle variabili , non a quelle di quella classe ... poi sinceramente una classe che usa una global non mi ispira affatto fiducia ...
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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.