În PHP, metoda magică __call permite polimorfismul (= aceeași metodă definită în mai multe feluri).
Semnătură:
$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() );
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:
Trimiteți un comentariu