内容简介:先不多说,直接上代码,如下:运行结果:方法总结:
先不多说,直接上代码,如下:
class Demo
{
private $str = 'str';
//实例化时自动加载function
public function __construct()
{
echo "start<br/>";
}
//__call()用来获取没有定义的function
public function __call($name, $arguments)
{
echo $name.'_call<br>';
}
//获取私有变量
public function __get($name)
{
// TODO: Implement __get() method.
echo $this->$name.'_get<br/>';
}
//通过关键字 clone 克隆一个对象时该对象调用__clone()方法
public function __clone()
{
// TODO: Implement __clone() method.
}
//__set()设置私有变量的值
public function __set($name, $value)
{
// TODO: Implement __set() method.
$this->$name = $value;
}
//————callStatic()调用没有被定义的static静态function
public static function __callStatic($name, $arguments)
{
// TODO: Implement __callStatic() method.
echo $name.'_classStatic';
}
//删除类对象时候自动调用
public function __destruct()
{
// TODO: Implement __destruct() method.
echo "end";
}
}
$class = new Demo();
$class->success();
$class->succ = 111;
echo $class->succ;
echo $class->str;
echo '<br>';
$obj = clone $class;
print_r($obj);
echo '<br>';
$class::end();
运行结果:
start success_call 111str_get clone Demo Object ( [str:Demo:private] => str [succ] => 111 ) end_classStatic endend
方法总结:
- __set(),__get(),__isset(),__unset()可以归之为一类,适用于私有变量的设置、取值、判断、删除的操作。
-
__construct()构造函数,__desctruct()析构函数,实例化类的时候就会产生,有一点不同,构造在最前面,
析构函数在最后面 -
当调用class中没有定义的方法时,会报错fail error,如果class中定义了__call(),会直接调用__call()方法进行操作。
例如:$class->success('data');类中的__call方法开始执行把参数转换为数组形式array([0] => 'data');
__callStatic()方法同理,只是对没有定义的静态方法起作用。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Python 最会变魔术的魔术方法,我觉得是它
- Spring Boot魔术背后的剖析
- 《快学 Go 语言》第 14 课 —— 魔术变性指针
- 十大魔术命令:Python中工作效率飙升之策
- PHP反序列化入门之常见魔术方法
- 对于魔术方法 __call, __callStatic 新的认识
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Rework
Jason Fried、David Heinemeier Hansson / Crown Business / 2010-3-9 / USD 22.00
"Jason Fried and David Hansson follow their own advice in REWORK, laying bare the surprising philosophies at the core of 37signals' success and inspiring us to put them into practice. There's no jarg......一起来看看 《Rework》 这本书的介绍吧!