Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
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