Magic Methods in PHP

Magic method are specialized method that is executed in response to a specific PHP event.Each magic method is prepended with two underscores. It triggers custom behaviour and defined by programmer inside the class. Some of the magic methods are __construct(),__destruct(), __toString(), __get(), __set(), __call() etc.

__construct and __destruct Magic Methods

__construct is called when an object of a class is created.

__destruct is called when object of a class is destroyed.

Take an example

class magic

     function __construct(){
	  echo "Object is created";

     function __destruct(){
	  echo "object is destroyed";


$magicObject = new magic(); // __construct() is called

unset($magicObject); // __destruct is called

__get Magic Method

__get() is called when the object of a class try to read a property or variable that is inaccessible or unavailable.

**inaccessible means either the property is not defined or it is not public

class student{

	public $Name;
	public $Address;

	public function __get($var){

	  echo "Unavailable $var";


 $stu = new student;

 echo $stu->$Age; // $Age is not available so __get() is called

When you execute this code it print Unavailable Age

__set Magic Method

__set() is called when code tries to set a method that is not accessible.

** If __set() is used to set property that doesn’t exit, the new property will be public.

class student{

        public Age;

       public function __set($name,$val){

                $this->$name = $val;


	public function display(){
		echo $this->Age;


$stu = new student;

$stu->Age = 5;


__call Magic Method

It is called when method of class called does not exist or inaccessible.

class checkcall{

	public function __call($method,$argument){

		echo "method is not defined";

$object = new checkcall;

$object->display();   // Display is not defined. so __call is called

__toString() Magic Method

It allows you to set a string value for the object that will be used if the object is ever used as a string

class testString
	function __toString(){
	   echo "to string";

$test = new testString();

echo $test; // You can't echo object. But in this case __toString() is called.

Cons of Magic Method

1. Magic methods are slow.

2. Magic method is public so it ignores scope.

Magic Method Manual


About admin

I am technology lover who loves to keep updated with latest technology. My interest field is Web Development.
Tagged , . Bookmark the permalink.

Comments are closed.