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
();