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ì.
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.
Scritto da Dominic Skinner
Ultimo aggiornamento: 2011/10/25 16:00:38