I regularly use your site to answer my PHP problems! "Io uso regolarmente il vostro sito per rispondere a miei problemi PHP!"
Opaco

Metodi magici

Ci sono diversi metodi di magia in PHP che consente di risparmiare tempo limitando quale codice deve essere scritta per accedere ai metodi , i getter e setter, ecc

__get ($ val) consente di avere un metodo get su una classe senza in realtà creare un metodo get così.

Notate come ci assicuriamo che non cerchiamo di restituire una variabile se la variabile richiesta è vuota, questo assicura che non cercare di ottenere una variabile che non esiste.
Quando un get o set viene chiamato su una classe, PHP cerca di vedere se vi è una proprietà definita in modo esplicito che è visibile prima di chiamare un magico __ ottenere o impostare il metodo __.

Example Esempio di classe
{
counter ; private $ contatore;
name ; private $ nome;
age ; private $ età;

__get ( $ var ) function __ get ($ var)
{
empty ( $ var ) ) if (empty ($ var))
{
$ this - > $ var ; return $ this -> $ var;
}
}
}

Ciò significa che il codice qui sotto otterrà le variabili private senza alcuna getter che devono essere scritti in classe.

example = new Example ( ) ; $ Esempio = Esempio new ();
example - > name ; $ Esempio -> nome;
example - > counter ; $ Esempio -> contatore;
Unfortunatley ha anche permesso di accedere a contatore che, dovrebbe essere tenuto interna alla classe. Un modo migliore quindi di fare questo è.
Example Esempio di classe
{
counter ; private $ contatore;
vars ; private $ vars;

__get ( $ var ) function __ get ($ var)
{
empty ( $ var ) & & ! empty ( $ vars [ $ var ] ) ) if (empty ($ var) &&! empty ($ vars [$ var]))
{
$ this - > $ vars [ $ var ] ; return $ this -> $ vars [$ var];
}
}
}
Questo sarà quindi assicurare che i valori vengono letti soltanto dalla matrice privata e non altre variabili private sono esposti. __ Set () è molto simile a __ get eccezione del fatto che si tratta di un setter piuttosto che un getter. Viene impostato un valore nel seguente modo.
Example Esempio di classe
{
name ; private $ nome;

__set ( $ var , $ value ) la funzione __ set ($ var, $ value)
{
empty ( $ var ) ) if (empty ($ var))
{
this - > $ var = $ value ; $ This -> $ var = $ value;
}
}
}
Questo può essere utilizzato nel modo seguente:
example = new Example ( ) ; $ Esempio = Esempio new ();
example - > name = ' Dominic ' ; $ Esempio -> nome = 'Dominic';
Ancora una matrice privata potrebbe essere utilizzato per proteggere la protezione delle altre variabili nella classe.

Nessun commento è stato fornito.
security image
Scritto da Dominic Skinner
Ultimo aggiornamento: 2011/10/25 16:00:38