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

»

Combine HTML5 & Bootstrap As Key Ingredients For Rebooting Your Business

HTML5 has achieved the tremendous heights in the recent years owing ...

»

10 Tips On Social Media That Will Land Your Dream Job

A job search trends survey conducted by Jobvite showed that 48% of ...

»

10 Best Node.js Frameworks For Web And Apps Development

Node.js is counted among one of the most renowned JavaScript runtime ...

»

Fetch Your Customers : Retail Commerce

As listening the word commerce it comes in our mind that it is ...

»

Best App Design Practices for 2016

The year 2015 witnessed some groundbreaking revolution regarding app ...

»

9 Websites To Visit For Exemplary Footer Design Inspiration

When we set out to design a website, our primary focus is on the ...

»

What are the Cloud Computing trends to dominate in 2016

With Cloud computing, it has developed cell phones into a remote ...

»

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