Inaccurate

__isset();  When an undefined property calls isset, it is called.

__unset(); When an undefined property calls unset, it is called.

__get();   When calling an undefined property in a class, it is called.

__set();      When a value is assigned to an undefined attribute in a class, it is called.

 

 

class C{

function __set($p, $p1){
var_dump(__METHOD__);
}

function __get($p){
var_dump(__METHOD__);
}

function __isset($p){
var_dump(__METHOD__);
}

function __unset($p){
var_dump(__METHOD__);
}
}

$c = new C;
var_dump(isset($c->a));
unset($c->a);
var_dump($c->a);
$c->a = 1;

=======================>

string(10) “C::__isset”
bool(false)
string(10) “C::__unset”
string(8) “C::__get”
NULL
string(8) “C::__set”

 

 

__invoke();   __debugInfo

 

class CallableClass
{
  function __invoke($x) {
    $x();
  }

 

  function __debugInfo(){

    return [‘property’ => 1];

      }
}

$obj = new CallableClass;
$obj(function(){var_dump(1);});//int(1)
var_dump(is_callable($obj));//bool(true)

var_dump($obj);//Objects with parameters.

 

__set_state();     When calledvar_export() When the class is exported, this static method will be called.

 

<?php

class A
{
    public $var1;
    public $var2;

    public static function __set_state($an_array) // As of PHP 5.1.0
    {
        $obj = new A;
        $obj->var1 = $an_array[‘var1’];
        $obj->var2 = $an_array[‘var2’];
        return $obj;
    }
}

$a = new A;
$a->var1 = 5;
$a->var2 = ‘foo’;

eval(‘$b = ‘ . var_export($a, true) . ‘;’); // $b = A::__set_state(array(
                                            //    ‘var1’ => 5,
                                            //    ‘var2’ => ‘foo’,
                                            // ));
var_dump($b);

?>

Leave a Reply

Your email address will not be published. Required fields are marked *