Ragazzi volevo fare una domanda, in base a cosa, scegliamo di settare gli attributi di una classe a: private, protected e public ?
(Premetto che non sò se sia giusto postare qui, ma stò programmando in php . Qualora avessi sbagliato chiedo scusa ).
Ragazzi volevo fare una domanda, in base a cosa, scegliamo di settare gli attributi di una classe a: private, protected e public ?
(Premetto che non sò se sia giusto postare qui, ma stò programmando in php . Qualora avessi sbagliato chiedo scusa ).
Con i sogni possiamo conoscere il futuro...
Risposta veloce che meriterebbe approfindimenti o esempi:
- private: visibili solamente all'interno della classe stessa.
- public: visibili a tutti.
- protected: visibili solamente alle sottoclassi.
Ovviamente dipende dalle situazioni, ma gli attributi in genere dovrebbero essere tutti o private o protected ed accessibili solamente tramite eventuali metodi pubblici
"Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)
Se si parla semplicemente di attributi non si definiscono mai come pubblici, ma sempre come protected o private e si forniscono poi metodi pubblici che li espongono esternamente.
Per quanto riguarda i metodi come giustamente ha fatto notare satifal dipende molto dal contesto in cui ti trovi. Sono decisioni di software design dettate dalle specifiche funzionali che hai. Diciamo che in linea generale va definito pubblica la serie di metodi che definisce il behaviour dell'oggetto all'interno del "mondo" in cui si trova.
Rende l'idea?
beh per velocita' a volte li lasci pubblici![]()
cmq ne parlavamo anche qui : http://forum.html.it/forum/showthrea...6#post13599466
Al massimo poi vieni sul forum a chiedere aiuto quando non capisci più come mai non vaOriginariamente inviato da Virus_101
beh per velocita' a volte li lasci pubblici![]()
![]()
Muahahahahahah.
se devo fare oggetti al volo per descrivere dati ... metto attr pubblici se faccio classi con metori sono sempre privati con getters and setters![]()
Se devo fare oggetti al volo uso la StdClass di SPL non perdo nemmeno tempo a scrivere.
si e quegli oggetti hanno attr pubblici o privati ?![]()
Pubblici ma a dirla tutta non li usi nemmeno come oggetti ma come strutture dati visto che comunque non puoi aggiungere metodi. Oddio non è vero puoi farlo con le lambda function ma non utilizzerei mai un stdClass per quello.
Di solito le StdClass le usi nei mapper o per serializzare valori in modo strutturato e li butti via immediatamente.
ad esmpio soap quando completa le request genera tutte std classe per quello si anche io li uso cosi'