__call

З PHP5 ви можете реалізувати в класі спеціальний метод __call (), як метод для "вилову" всіх нереалізованих у даному класі методів. Метод __call (якщо він визначений) викликається при спробі викликати недоступний або неіснуючий метод.

<? Php 
class foo { 

function __call ($name, $arguments) { 
print ("Викликали? Я - $ name!"); 
} 
} 

$X = new foo (); 
$ X-> doStuff (); 
$ X-> fancy_stuff ();

?>

Цей спеціальний метод може бути використаний для реалізації перевантаження методів: ви можете досліджувати отримані аргументи і залежно від результату викликати підходящий для даного випадку закритий метод, наприклад:

<? Php 
class Magic { 

function __call ($name, $arguments) { 
if ($name == 'foo') { 
if (is_int ($arguments [0])) $this-> foo_for_int ($arguments [0]); 
if (is_string ($arguments [0])) $this-> foo_for_string ($arguments [0]); 
} 
} 

private function foo_for_int ($x) { 
print ("о, дивіться, ціле число!"); 
} 

private function foo_for_string ($x) { 
print ("о, дивіться, рядок!"); 
} 
} 

$X = new Magic (); 
$X-> foo (3); 
$X-> foo ("3");
 
?>