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.

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

<?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 :

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.

<?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 :

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

»

Is Your Business Site Fully Accessible?

Does your business site have full accessibility? Even with the ADA ...

»

Secure Web: 5 Best Practices For Application Development

There are several essential best practices for secure web ...

»

Laravel PHP Framework: Features and benefits for web development

Companies and organizations are focusing on developing custom web ...

»

Web Development Vs. Software Development: What Is the Difference?

As technology continues to transform all aspects of our lives, a lot ...

»

Web Redesign : Is Your Landing Page Begging for one?

How do you know when it’s time to web redesign your landing page? ...

»

Customer Acquisition: Few Steps To Improve This.

Customer acquisition is essential to any business’s success — to ...

»

Mobile App Development Tools: 5 Enterprise-Ready For Rapid Deployment

There are several enterprise-ready mobile app development tools for ...

»

Docker: How To Build Better Development Security With It

The top concern among developers and DevOps teams is security within ...

»

Mobile Development: How to Reduce Costs

Modern markets have become so competitive that it has become vital ...