Create a gist now

Instantly share code, notes, and snippets.

PHP Magic methods
Test script to verify that magic methods should be called only once when
accessing an unset property.
class Test {
public $publicProperty;
protected $protectedProperty;
private $privateProperty;
public function __construct() {
function __get($name) {
echo '__get ' . $name . "\n";
return $this->$name;
function __set($name, $value) {
echo '__set ' . $name . "\n";
$this->$name = $value;
function __isset($name) {
echo '__isset ' . $name . "\n";
return isset($this->$name);
$test = new Test();
$test->nonExisting = 'value';
$test->publicProperty = 'value';
$test->protectedProperty = 'value';
$test->privateProperty = 'value';
__get nonExisting
Notice: Undefined index: nonExisting in %__set__get_006.php on line %d
__get publicProperty
Notice: Undefined index: publicProperty in %__set__get_006.php on line %d
__get protectedProperty
Notice: Undefined index: protectedProperty in %__set__get_006.php on line %d
__get privateProperty
Notice: Undefined index: protectedProperty in %__set__get_006.php on line %d
__isset nonExisting
__isset publicProperty
__isset protectedProperty
__isset privateProperty
__set nonExisting
__set publicProperty
__set protectedProperty
__set privateProperty
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment