__call()
The call() magic function is to class functions what __get() is to class variables - if you call meow() on an object of class dog, PHP will fail to find the function and check whether you have defined a __call() function. If so, your __call() is used, with the name of the function you tried to call and the parameters you passed being passed in as parameters one and two respectively.
Here's an example of __call() in action:
<?php
class dog {
public $Name;
public function bark() {
print "Woof!\n";
}
// public function meow() {
// print "Dogs don't meow!\n";
// }
public function __call($function, $args) {
$args = implode(', ', $args);
print "Call to $function() with args '$args' failed!\n";
}
}
$poppy = new dog;
$poppy->meow("foo", "bar", "baz");
?>
Again, note that the meow() function is commented out - if you want to be sure that __call() is not used if the function already exists, remove the comments from meow().



Copyright 2012 Future Publishing Limited (company
registered number 2008885), a company registered
in England and Wales whose registered office is at
Beauford Court, 30 Monmouth Street, Bath, BA1 2BW, UK