php类的魔术方法
在php 5中,提供了构造函数,析构函数,对象克隆的方法,重载方法等.
1、构造函数__construct
如果在类申明中__construct函数,将被当成一个构造函数并且在对象建立时被执行,但在php4中,构造函数的名称与类名相同就是构造函数哦,这一点有一些不同。
2、析构函数__destruct
如果在php类中申明了,在对象被销毁时调用__destruct函数
下面来看个实例,代码如下:
- <?php
- class Session
- {
- public function __construct()
- {
- echo '构造函数执行';
- }
- public function __destruct()
- {
- echo '析构函数执行';
- }
- }//开源代码phpfensi.com
- $Obj = new Session;
- unset($Obj);//删除对象, __destruct()会被调用的
- //输出
- //构造函数执行
- /析构函数执行
- ?>
上面在使用new创建对象时就执行了__construct,对象结束时就执行了__destruct()
3、__clone()克隆函数,代码如下:
- <?php
- class Session
- {
- public $age = 20;
- public $sub = null;
- public function __clone()
- {
- $this->sub=clone $this->sub;
- }
- }
- class Session 2
- {
- public $value=5;
- }
- $s = new Session;
- $s->sub=new Session 2;
- $s2 = clone $s;
- $s->sub->$value =10;
- echo $s2->sub->$value;
- ?>
4 现在来看关于重载函数__get ,__set,__call函数,代码如下:
- <?php
- class Session
- {
- protected function __call($func,$para)
- {
- echo '方法不存在:’func." ".'参数为:'." ";
- print_r($para);
- }
- }
- $s=new Session ();
- echo $c->getNames('hello','you');
- /*
- 输出:
- 方法不存在:getNames
- 参数为:
- Array
- (
- [0] => hello
- [1] => you
- )
- */
- ?>