您的位置:首页 > 编程语言 > PHP开发

对php面向对象中魔术方法的认识

2015-01-26 22:16 661 查看
<?php
//header(charset="utf8");
//echo 'hey 这里是描述我对php 面向对象中各种魔术方法的认识。';
/*
*魔术方法是在一些特定情况下会自动调用的一些php系统自定义函数
*这些函数都很有个性,他们统一以__两个 _ (下划线)开头。
* 下面对于php 中这些常用的魔术方法一些个人认识。
**/
class demo {
public $name;
public $age;

//当实例化这个类,首先会自动调用的方法 __construct (构造函数)
//注意,在一些特定场合将构造函数写成了私有方法时,需要用静态方法实例化这个类
function __construct($name,$age){
echo '实例化本类最先执行的函数<br>';
$this->name = $name; //这样以来相当于初始化了这个实例。
$this->age = $age;
}

//当对象被克隆时触发的函数 __clone()
function __clone(){
echo '发现克隆体<br>';
}

//当我们访问一个不存在的或者无权限访问的属性时。触发函数 __get
//当访问private,protected等属性都会触发该函数
function __get($value){
echo '你正要访问的'.$value.'属性无法访问<br>';
}

//设置属性与属性值,对已经存在的属性设置不会触发函数 __set
function __set($key,$value){
echo "你所要设置的属性名为$key,属性值为$value<br>";
}

//当在一个未定义(包括 protected/private)的属性上调用 isset() 时,调用__isset()
function __isset($value){
echo '你所访问的属性不存在<br>';
}

//在删除一个不可访问的属性时间触发 __unset()
function __unset($value){
echo "你这要删除一个名为".$value."的属性<br>";
}

//析构函数指的是当某个对象的所有引用被删除,或者对象被显式的销毁时会执行的函数。 __destruct(析构函数)
//可以说这个方法是在程序的最后面执行的
function __destruct(){
echo '程序跑到尾声才触发的一个函数';
}
}
$demo = new demo('zhang','1');
//unset($demo->ss);//你这要删除一个名为ss的属性
//isset($demo->sss);//你所访问的属性不存在
//你所要设置的属性名为gender,属性值为nan
//$demo->gender = 'nan'; //不存在的属性出发__set 方法
//$demo->name = 'jian'; //已存在的属性直接设置。
//echo $demo->name;
//$demo->ss;//你正要访问的ss属性无法访问
//$demo1 = clone($demo); //此时处罚了clone() 方法
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息