PHP5 Tutorial – Magic Methods – __isset() and __unset()
In my previous PHP5 OOPS tutorial on PHP5 Tutorial – Magic Methods – __get() and __set(), we learnt how and when to use these magic methods.
This PHP5 OOPS tutorial will teach you how and when to use the magic methods __isset() and __unset().
These methods are automatically called internally when isset() and unset() is called on undeclared data members. The magic method __isset() method receives an argument – the value of which is the name of the variable that the program wants to test if the variable is set or not.
The magic method __unset() method receives an argument – the value of which is the name of the variable that the program wants to unset.
Look at the example below:
class Customer { private $data = array(); public function __set($dt, $vl) { $this->data[$dt] = $vl; } public function __get($dt) { return $this->data[$dt]; } public function __isset($dt) { return isset($this->data[$dt]); } public function __unset($dt) { return unset($this->data[$dt]); } } $c = new Customer(); $c->name = "Sunil Bhatia"; echo isset($c->name)."\n"; echo unset($c->name);
In the example above the script creates a new Customer Object. The program assigns a string value to an undeclared variable i.e. $c->name. The undeclared variable is handled by the magic method __set(). Read this post on PHP5 Magic Methods __set() if you need more understanding how the magic method __set() works.
The program ties to check if the undeclared variable i.e., $c->name has been set or not using the PHP method isset(). Since $c->name is an undeclared variable the PHP5 magic method __isset() is invoked that takes the name of the undeclared variable i.e. “name” and checks if the internal array $data["name"] is set or not.
Similarly, when the program calls unset() on the undeclared variable i.e. $c->name, the PHP5 magic method __unset() is invoked that takes the name of the undeclared variable i.e. “name” and unsets the internal array $data["name"].
Related Posts on PHP5 Tutorial – Object Oriented Programming (OOPS)
- PHP5 Tutorial – Learn to create a PHP5 Class
- PHP5 Tutorial – Learn to Create a PHP5 Class Object
- PHP5 Tutorial – Defining Attributes of a PHP5 Class
- PHP5 Tutorial – Defining Methods of a PHP5 Class
- PHP5 Tutorial – Creating a PHP5 Constructor __construct()
- PHP5 Tutorial OOPS – Creating a PHP5 Destructor __destruct()
- PHP5 Tutorial OOPS – PHP5 Class Access Specifiers – public, private and protected
- PHP5 Tutorial – Magic Methods – __toString() method
- PHP5 Tutorial – Magic Methods – __get() and __set()
- PHP5 Tutorial – Magic Methods – __isset() and __unset()
- PHP5 Tutorial – Magic Methods – __call() method
- PHP5 Tutorial – Magic Methods – __autoload() method
- PHP5 Tutorial – Magic Methods – __sleep() and __wakeup()
- PHP5 Tutorial – Magic Methods – __clone() method

public function __unset($dt) {
return unset($this->data[dt]);
}
There’s a typo
dt on line 2 -> $dt
unset won’t return anything, so it should be
public function __unset($dt) {
unset($this->data[$dt]);
}
And you can check whether the value got unset using :
unset($c->name);
echo ‘name=>’.$c->name;
Thanks…
Error in Line no 17 ,22, 25 ,Kindly edit and replace your example.
Dear Sunil,
Following error are display when we use your above example. Kindly edit it and replace and inform me.
line no 17 : return unset($this->data[dt]);
line no 22 : $c->name = “Sunil Bhatiaâ€;
line no 25 : echo unset($c->name);
Thanks for pointing this out Bharat. I have fixed the issue – had some issue with UTF-8 encoding while saving the post.
Dear Sunil,
Thanks for your great thought. We are waiting. We also requesting to you that kindly create some shopping card tutorial for e-commerce website purpose.