码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2015-01-26 23:00:56      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:魔术   php   php __get   php __set   php __isset   

<?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() 方法
?>

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

标签:魔术   php   php __get   php __set   php __isset   

原文地址:http://kinpui.blog.51cto.com/6062354/1608589

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!