复制代码
注意这个函数如果需要正常加载,需要将文件名设置成类名(推荐小写).class.php等类名和文件名有某种关联才可以,另外如果这个函数出现异常不能被catch捕获,将会显示fatal error
2.__construct() 构造函数
在c#和php4中构造函数的函数名都是与类名相同,当然php5也支持这样(如果找不到__construct方法后会找函数名与类名相同的作为构造函数),之所以这样写的好处是如果我们想更改类的名字,我们就只改类名就可以,不用在更改构造函数的函数名,同时从某种程度上减少了我们出错的概率,示例代码还是简单写一下吧!
url=$url;
}
}
?>
复制代码
3.__destruct() 析构函数
__destruct 析构方法,php将在对象被销毁前(即从内存中清除前)调用这个方法
默认情况下,php仅仅释放对象属性所占用的内存并销毁对象相关的资源.
析构函数允许你在使用一个对象之后执行任意代码来清除内存.
当php决定你的脚本不再与对象相关时,析构函数将被调用.
在一个函数的命名空间内,这会发生在函数return的时候.
对于全局变量,这发生于脚本结束的时候.如果你想明确地销毁一个对象,你可以给指向该对象的变量分配任何其它值.通常将变量赋值勤为null或者调用unset.
4.__call() 当所调用的成员方法不存在(或者没有权限)该类时调用,用于对错误后做一些操作或者提示信息
walk(5,39);
//调用person类中不存在的方法
$p->work();//如果没有使用魔术方法__call,则程序发生错误,错误信息fatal error: call to undefined method person::work() in d:/phpnow/htdocs/holiday/magic__call.php on line 29
//如果使用了魔术方法__call,则在对象调用类中不存在的函数时,__call被自动调用,用来执行某些操作。
?>
复制代码
5.__clone()
该函数在对象克隆时自动调用,其作用是对克隆的副本做一些初始化操作
cpu='amd';//$this指的是新创建的克隆对象
}
//设置析构函数,用来比较=和clone的区别
function __destruct(){
echo '*************************************
';
}
}// the end of the class
//实例化一个对象
$c1=new computer();
//使用引用的方法在添加一个引用,因为对象的引用是存放在内存中的栈内存中,如果按指针的说法,那么这样做就是在内存中有创建了一个指针指向$c1指向的对象
//我们可以通过条用析构函数判断出来这样不是复制了对象
$c2=$c1;
//使用clone方法克隆一个对象
$c3=clone $c1;
//输出两者的信息比较
echo $c1->cpu,'
';
echo $c3->cpu,'
';
?>
复制代码
6.__get() 当所对象所调用的成员属性未声明或者级别为private或者protected等时,我们可以在这个函数里进行自己的一些操作
name;//call the __get function
$nation=$p->nation;//never call the __get function
?>
复制代码
7.__set() 当所对未声明或者级别为private或者protected等进行赋值时调用此函数,我们可以在这个函数里进行自己的一些操作
key=123;
?>
复制代码
1 2 下一页 尾页