php -- 魔术方法 之 删除属性:__unset()

属性重载:当访问一个不存在或者权限不够的属性的时候,能够触发一系列的魔术方法,就叫做属性重载

__unset():当删除一个不存在或者权限不够的属性的时候会自动触发

<?php

    //属性重载
    class Person{
        //属性
        public $name;
        private $age;

        //构造方法
        public function __construct($name,$age) {
            $this->name = $name;
            $this->age  = $age;
        }

        //增加__unset方法,没有返回值
        public function __unset($name){
            $allow = array(‘age‘);

            //判断
            if(in_array($name,$allow)){
            //如果允许删除,就帮助其删除
                unset($this->$name);
            }
        }
    }
    echo ‘<pre>‘;

    //实例化
    $person = new Person(‘方智‘,19);

    var_dump($person);
    //删除属性
    //unset($person->name);                    //公有属性可以直接被unset掉
    //var_dump($person);

    //unset私有属性
    unset($person->age);
    var_dump($person);

    unset($person->tail);
时间: 2024-10-29 13:51:38

php -- 魔术方法 之 删除属性:__unset()的相关文章

PHP 对象 魔术方法 __get __set __isset __unset

class Person{     private $age = 20;     private $sex = 'male';     //__get()自动调用,是在直接访问私有成员时,自动调用!一个参数 属性值     function __get($value){         return $this->$value;     }     //__set()自动调用,是在直接设置私有属性值时,一个参数是属性名,一个参数是属性值     function __set($name,$val

php -- 魔术方法 之 获取属性:__get()

属性重载:当访问一个不存在或者权限不够的属性的时候,能够触发一系列的魔术方法,就叫做属性重载 __get():获取不存在或者权限不够的属性的时候会自动触发 <?php header('Content-type:text/html;charset=utf-8'); echo '<pre>'; //PHP属性重载 class Person{ //属性 public $name; protected $money; private $age; //构造方法 public function __

__unset()魔术方法 删除类内私有属性

__unset()魔术方法 删除私有属性 unset()对共有属性进行删除 可通过__unset()魔术方法对私有属性进行操作 当在类外部执行unset()函数时,自动执行类内__unset()魔术方法 class hdw { private $name; private $age; private $money; //员工工资 public $c; function __construct($name, $age = '', $money) { $this->name = $name; $th

数据持久化、单例、重载【添加对不可访问的成员的操作】、魔术方法、类常量、static关键字对self的补充【静态延迟绑定实现$this的效果】、参数类型约束【参数前加类名】、遍历【iterator接口】、快速排序

1.数据持久化过程[传输(例如表单提交或php交互mysql)和保存过程] 使用的是字符串形式的流数据. 数据流就是为了传输[按照序列的形式进行传输] [http://baike.baidu.com/link?url=0MtUQMhFzc_EwJc09rXZV8KlfOL4jis6XNbRfmGA3rQhDcGwOp8togLVQjXBV34M] 所以将其他类型数据转化为字符串的过程也是序列化的过程 [这个概念和图片.视频的流媒体的区别?] [注意点] 另外mysql中sql语句中的某些关键词为

php中的常用魔术方法总结

以下是对php中的常用魔术方法进行了详细的总结介绍,需要的朋友可以过来参考下 常用的魔术方法有:__Tostring ()  __Call()  __autoLoad()  __ clone()  __GET()   __SET()    __isset()  __unset() 1.__Tostring()   用于定义输出对象引用时调用  常用于打印一些对象的信息 必须有返回值eg:有一个persion类Persion per =new persion()Echo per;    //直接调

PHP中的常见魔术方法功能作用及用法实例

概述 在面向对象编程中,PHP提供了一系列的魔术方法,这些魔术方法为编程提供了很多便利.PHP中的魔术方法通常以__(两个下划线)开始,并且不需要显示的调用而是由某种特定的条件出发.这篇文章简单总结了PHP中提供的魔术方法. 开始之前 在总结PHP的魔术方法之前先来定义两个类,以便后边示例使用: 复制代码代码如下: <?phpclass Device {    public $name;               public $battery;            public $data

PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化)/约束类型/魔术方法小结

  前  言  OOP  学习了好久的PHP,今天来总结一下PHP中的抽象类与抽象方法/静态属性和静态方法/PHP中的单利模式(单态模式)/串行化与反串行化(序列化与反序列化). 1  PHP中的抽象类与抽象方法 1.什么是抽象方法?              没有方法体 {} 的方法,必须使用abstract 关键字修饰.这样的方,我们叫做抽象方法.                    abstract function say(); //    抽象方法 2.什么是抽象类?        

__get().__set.__isset,__unset魔术方法

一般来说,总是把类的属性定义为 private .这更符合现实的逻辑. 但是对属性的读取和赋值操作非常频繁的,因此在PHP中,预定义了两魔术方法 "__get()"用来获取私有成员属性值的,只有一个参数获取的属性名称. "__set()"用来为私有属性设值的,有两个参数,第一参数为属性名,第二个属性值. (用__set,不用我们手工去调用,它也可以做成私有的的,是在直接设置私有属性值的时候自动调用的,同样属性私有的已经被封装上了.) 以及检查属性的方法"__isset()"和

PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep

PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload 1.__get.__set这两个方法是为在类和他们的父类中没有声明的属性而设计的__get( $property ) 当调用一个未定义的属性时访问此方法__set( $proper