Hacking with PHP has been updated for PHP 7 - click here! >>


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:

    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().


If this was helpful, please take a moment to tell others about Hacking with PHP by tweeting about it!

Next chapter: __toString() >>

Previous chapter: __set()

Jump to:


Home: Table of Contents

Copyright ©2015 Paul Hudson. Follow me: @twostraws.