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

发布时间:2020-06-24 20:48:23 作者:cheongkinpui
来源:网络 阅读:292

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

推荐阅读:
  1. PHP中的面向对象OOP中的魔术方法
  2. PHP面向对象魔术方法总结

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php 魔术 php __get

上一篇:Centos 7搭建LVS+Keepalived高可用Web服务群集

下一篇:python怎么实现格式化输出

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》