20 martie 2012

PHP: Metoda magică __call

În PHP, metoda magică __call permite polimorfismul (= aceeași metodă definită în mai multe feluri).
Semnătură:
public function __call ($name, $parameters) {

}
Unde:
$name este numele metodei care se suprascrie
$parameters este un array de parametri ai funcției

Diferența între metode se face în funcție de nume și de numărul de parametri (count ($parameters)).

Exemplu: într-o clasă oarecare numită User dorim să avem o metodă numită getPermissions care dacă ia un singur parametru, returnează True/False (dacă userul respectiv are acces la un articol sau nu), și dacă nu ia niciun parametru returnează un array de id-uri de articole la care userul are acces.

class User {


    // alte metode


     public function __call ($name,$param) {
if ($name== "getPermissions" && count($param) == 0) {
// returneaza un array
}
if ($name== "getPermissions" && count ($param) == 1) {
// returneaza true sau false in fct de $param
}
}
  }

$user = new User ("guest", "parola");
// apelare metodă magică
print ( $user->getPermissions("3") );
print_r ( $user->getPermissions() );  

Niciun comentariu: