php常用魔术方法

1.__get,__set:当调用不存在的变量时,__set方法自动去赋值,__get方法自动取值
namespace Com;
class Object{
    public $array = array ();
    function __set( $key , $value ){
        $this -> array [ $key ] = $value ;
    }
    function __get( $key ){
        return $this -> array [ $key ];
    }
}
$ob = new \Com\Object();
$ob -> title = "hello ; //title变量不存在,此时会调用__set方法去设置变量;
echo $ob -> title ;
2.__call当方法不存在时会自动调用__call
__callStatic;当静态方法不存在时会自动调用__callStatic
function __call( $func , $params ){
    var_dump ( $func , $params );
    return "magic func \n " ;
}
$ob = new \Com\Object();
echo $ob ->test( "hello" , 123 );

function __callStatic( $name , $arguments )
{
    return "static" ;
}
echo \Com\Object:: test ( "hello" , 123 );
3.当echo一个对象时会自动调用__toString;
function __toString()
{
    return __CLASS__ ;
}
$ob = new \Com\Object();
echo $ob;

4.__invoke当把对象当成函数调用时会自动调用invoke方法
function __invoke()
{
    return "invoke" ;
}
$ob = new \Com\Object();
echo $ob ();

猜你喜欢

转载自blog.csdn.net/sinat_14826983/article/details/80875741