Indicatori di visibilità

marco_rx

Utente Attivo
19 Dic 2010
129
0
0
Ciao, volevo sapere quando è il caso di usare un indicatore al posto degli altri. So che proprietà e metodi dichiarati con public sono accessibili dappertutto, con protected solo nella classe e in quelle che ereditano e con private solo nella classe dove sono dichiarati. Però non mi è chiaro come utilizzarli. I metodi li ho sempre dichiarati come pubblici e le proprietà di solito come protected. Ma il private dove dovrei usarlo? Io lo avrei usato al posto del protected per le proprietà ma poi ho letto che per le classi che ereditano è meglio utilizzare protected. quindi mi chiedo: il private viene usato spesso?

Spero di essermi fatto capire e che possiate chiarirmi le idee.
 

narc0x

Utente Attivo
10 Ott 2008
128
2
18
Diciamo che un metodo privato viene solitamente dichiarato quando si ha bisogno di eseguire una determinata operazione esclusivamente nella classe in cui si sta lavorando.

Per esempio, presupponendo che l'applicazione in sviluppo è un blog, se sto effettuando una INSERT in un database chiamerò un metodo insertPost($data) in cui $data è un array.

Dentro insertPost() sarà necessario validare e/o filtrare i dati in ingresso, quindi si fa ricorso ad un metodo private chiamato ad esempio: __filterData($data) che verrà chiamato dentro insertPost() per verificare i dati e restituire gli stessi.

Ad esempio:

PHP:
class Post
{
     public function insertPost($data)
     {
          $filteredData = $this->__filterData($data); // Questo sarà il tuo array filtrato
          $db->insert($filteredData); // Presupponendo che $db sia una classe che gestisce le chiamate al database          
          
     }

     private function __filterData($data)
     {
         if (!is_array($data)) throw new InvalidArgumentException('I dati in ingresso devono essere di tipo array'); // Controlla se $data è un array
         return filter_var_array($data, FILTER_SANITIZE_STRING); // Questo filtro è solo un esempio
     }
}

Spero di essere stato chiaro, in caso contrario sono a tua disposizione ;)

EDIT: Ovviamente non mi sono soffermato sul fatto che il metodo __filterData() potrebbe essere incapsulato in un'ulteriore classe che gestisce i dati in ingresso di qualsiasi punto dell'applicazione.
 
Ultima modifica:

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Se ti interessa approfondire puoi eventualmente consultare questo articolo dedicato all'Information Hiding
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Se ti trovi a dover sviluppare una libreria che, dunque, presenta un'API, dichiarerai come pubblici (e dovranno rimanere immutati a meno di casi eccezionali), i metodi usati dagli altri sviluppatori, e come protetti quelli usati da classi estese (anche questi sarebbe meglio che non cambiassero nella firma e nel comportamento). Saranno privati invece i metodi usati esclusivamente da quella classe, che NON vuoi vedere estesi.
Per le proprietà, invece, la scelta è più difficile: dipende da cosa contiene la proprietà stessa. Solitamente, però, vengono dichiarate private e si espongono dei metodi per modificarle, così eviti che vengano impostati valori "illegali" (es. una stringa quando servirebbe un array).
 
Discussioni simili
Autore Titolo Forum Risposte Data
jonnino2004 indicatori di bontà di un dominio Domini 7
S Visibilità div in PHP PHP 1
O Script PHP e loro visibilità PHP 4
S Visibilità dei like dei propri amici su Facebook Social Media Marketing 2
S [HTML] Problema non visibilità del sito HTML e CSS 1
F visibilità nuovo elemento html creato con jquery jQuery 2
L Visibilità connessione Db con MySQLi in funzioni definite dall'utente PHP 0
S CERCO seguaci facebook italiani e aumentare visibilità del profilo Annunci servizi di Social Media Marketing 0
C [Vendo]Facebook Autopost Software - No SDK - Visibilità 100% Vendere e Acquistare pubblicita' online 0
G [Vendo] Segnalazione Top Directory Italiane + Visibilità su home directory pr4 Altri Annunci 0
S problema di visibilità con 2 o piu layer Javascript 14
R Gestione visibilità campi a seconda di una lista ASP.NET 1
M Aumentare la visibilità' del sito SEO e Posizionamento 13
D Visibilità del codice restituito da una chiamata Ajax Ajax 8
F Visibilità sito web dalla rete Reti LAN e Wireless 5
P [OFFRO] promozione gratis aziende ed attività, massimima visibilità Altri Annunci 0
D Visibilità Sito e Rss Feed SEO e Posizionamento 0
S [Cerco] Sponsor, ottime soluzioni, massima visibilità Vendere e Acquistare pubblicita' online 0
Q aumento visibilità del tuo sito gratis Presenta il tuo Sito 0
A All-homepage.com - La massima visibilità per il vostro sito! Presenta il tuo Sito 0
S Visibilità Parametri Programmazione 4
S problemi visibilità ASP.NET 0
S aumentare visibilità SEO e Posizionamento 0
R Visibilità sito Hosting 1
N visibilità su diversi browser HTML e CSS 3
Andrea Pilotti Come aumentare la visibilità del proprio sito web Altri Annunci 0
C [VB6] visibilità delle variabili/matrici Programmazione 1
M Cambio visibilità file PHP 1
T aumenta la visibilità del tuo sito con uno scambio di recensione Presenta il tuo Sito 3
G visibilità del sito.... SEO e Posizionamento 2
P massima visibilità al tuo banner Presenta il tuo Sito 2

Discussioni simili