PHP Magic Functions: Best Part of Object Oriented PHP – Part 1


There are some reserved function names  in PHP class starting with __ ( double underscore ). These are __construct, __destruct, __isset, __unset, __call, __callStatic, __sleep, __wakeup, __get, __set, __toString, __set_state, __invoke and __clone. You cannot use these functions to serve your logical purpose but these are meant to be used for providing magic functionality.

Lets start with the most familiar ones …

__construct and __descruct : Play with birth ( initialization ) and death ( destroy ) of an object

These methods are better known as constructor ( called when object is initialized ) and destructor ( called when object is destroyed or scope of an object vanishes ), well known keywords in Object Oriented Programming. Most of you guys are already familiar with these functions therefore I am not going to discuss them in detail.

__call and __callStatic : Don’t leave any undefined function in your class

There are two ways of calling a class function. First one is with Object Scope and second one is with Static Scope. In former case an object of the class is first instantiated and then a function is called using the -> ( I’m missing its name, any suggestion !!! ) operator while in latter case the function is called using the Scope Resolution Operator( :: ) with class name.

Whenever you try to access a function of your class with object scope which is not defined it throws an error. e. g.

1
2
3
4
5
6
7
<?php
  class myClass() {
    private $a = true;
  }
 
  $myObj = new myClass();
  $myObj->showValue();

This will throw an error on execution:

Fatal error: Call to undefined method myClass::showValue() in <path-to-your-file>.php on line 11

To avoid this you can use magic function __call, this function is called whenever an undefined function of a class is called with object scope. Lets have a look

1
2
3
4
5
6
7
8
9
10
<?php
  class Greetings {
    function __call( $functionName, $argumentsArray ) {
      echo "Hello, " . ucfirst( $functionName ) . " !!!";
    }
  }
  $sayHello = new Greetings();
  $sayHello->steve();
  $sayHello->adams();
  $sayHello->dexter();

The output of the above code will be :

1
2
3
Hello Steve !!!
Hello Adams !!!
Hello Dexter !!!

Now think what will happen, if we call an undefined function with static scope, this will again throw an error on execution. To handle call to undefined static functions the __callStatic magic function is used.

1
2
3
4
5
6
7
8
9
10
<?php
  class Greetings {
    static function __callStatic( $functionName, $argumentsArray ) {
      echo "Hello, " . ucfirst( $functionName ) . " !!!";
    }
  }
 
  Greetings::steve();
  Greetings::adams();
  Greetings::dexter();

The output of the above code will be same as it was for the former code :

1
2
3
Hello Steve !!!
Hello Adams !!!
Hello Dexter !!!

For rest of the magic functions keep visiting my blog and don’t forget to leave feedback about the the post.

Happy coding and keep it as simple as possible.

Recently Published

»

How to Show Related Posts in WordPress Without a Plugin?

Making your visitors go through each post increases the browsing time ...

»

Noteworthy Facts About Android App Piracy and How It Can Be Dealt With

Are you a gaming aficionado, and obsessed with gaming apps? Do you ...

»

4 Great Ways to Turn Your Images into SEO Tools

Photos on a website help us to understand the website much more ...

»

8 Search Form Tutorials Built With CSS3, jQuery & HTML5

Elevate the power of search by adding search functionality or search ...

»

10 Best HTML5 Frameworks For Hybrid App Development

Hybrid apps are generally built around native web view container or ...

»

A Look at The Evolution Of WordPress and What Future Holds For It

When it comes to developing a website, WordPress is the first name ...

»

7 WordPress Plugins That Make Your Site Mobile Responsive

Not much in the recent past, having a responsive website that works ...

»

Things you should Consider When You Are Designing an E-commerce Website

The people of today’s generation have discovered the various ...

»

Developing a Mobile App Using Open Source Software? Consider These Tips For Security

Today, almost every IT organization (including the Fortune 500 ...