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

__unset()魔术方法 删除私有属性
unset()对共有属性进行删除 可通过__unset()魔术方法对私有属性进行操作

当在类外部执行unset()函数时,自动执行类内__unset()魔术方法

class hdw {
  private $name;
  private $age;
  private $money; //员工工资
  public $c;
  function __construct($name, $age = ‘‘, $money) {
    $this->name = $name;
    $this->age = $age;
    $this->money = $money;
  }
  function __isset($var) {
    $array = array ("name", "age" );
  if (in_array ( $var, $array )) {
    echo $var . "属性存在,他的值是:" . $this->$var;
  } elseif (in_array ( $var, array_keys ( get_object_vars ( $this ) ) )) {
    echo "属性不允许外部检查";
    return;
  } else {
    echo "属性不存在";
    }
  }
  function __unset($c) {
    if ($c == ‘age‘) {
      unset ( $this->$c );
      echo "删除属性{$c}成功!";
    } else {
      echo "不允许删除属性{$c}";
    }
  }
  function get_money() {
    echo $this->money;
  }
}
$lisi = new hdw ( "李四", 22, 5500 );
//isset ( $lisi->money2222 ) ;
//echo isset($_GET[‘page‘])?$_GET[‘page‘]:1;
unset ( $lisi->name );
//echo $lisi->get_money();

  

时间: 2024-11-09 03:23:10

__unset()魔术方法 删除类内私有属性的相关文章

访问类的私有属性(RTTI和模仿类2种方法)

如何访问类的私有属性? 下面以 TPathData 为例,它有一个私有属性 PathData,储存了每一个曲线点,但一般无法修改它,需要利用下面方法,才能访问修改(若有更好的方法,歡迎分享): 一.利用 RTTI 取得类私有属性(建议使用此方法): type TPathDataHelper = class helper for TPathData public function PathData: TList<TPathPoint>; end; function TPathDataHelper

类的私有属性及私方法(请注意属性的传值方式)

# -*- coding: utf-8 -*- #python 27 #xiaodeng #http://blog.csdn.net/wklken/article/details/6313265 #类的私有属性及私方法(请注意属性的传值方式) class MyClass(): def __init__(self): #定义私有属性,且直接给属性赋值,请记住传值方式 self.__name='xiaodeng' self.age=28 def printName(self): return sel

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

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

[示例]访问类的私有属性

如何访问类的私有属性? 下面以 TPathData 为例,它有一个私有属性 PathData,储存了每一个曲线点,但一般无法修改它,需要利用下面方法,才能访问修改(若有更好的方法,歡迎分享): 一.利用 RTTI 取得类私有属性(建议使用此方法): type TPathDataHelper = class helper for TPathData public function PathData: TList<TPathPoint>; end; function TPathDataHelper

转载: 通过反射操作类的私有属性

原文地址: http://blog.csdn.net/qustmeng/article/details/54691933 对于类的私有属性,如果没有提供公用方法去修改它,我们可以通过反射方法实现.下面为简单例子 import java.util.ArrayList; import java.util.List; public class A { private List<Integer> list = new ArrayList<Integer>(); public List<

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

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

类的私有属性 公有属性 继承 多态

私有属性 && 公有属性 1 #定义一个最简单的类 2 class person(object): 3 hometown = "china" #公有属性,所有类的对象共用的.使用对象.公有属性只会修改自己对象的公有属性,类名.公有属性会把所有对象的公有属性进行修改. 4 #原因是只要对象不调用公有属性是不会在自己本地创建其内存空间使用类共享的(类的实例化过程),只要本地修改就是在本地创建一个同名的变量而已,相当于局部变量,作用域屏蔽了类的公有属性 5 #构造函数,接收实

python基础===类的私有属性(伪私有)

说在前面的一点: python明明有私有的定义方法就是在变量或者方法的面前加上双下滑线__,这个实际上是python的伪私有.只是一种程序员约定俗称的规定,加了就表示私有变量,但是你如果要在外部调用的话,还是可以调用的. Python并没有真正的私有化支持,但可用下划线得到伪私有 (1)_xxx      "单下划线 " 开始的成员变量叫做保护变量,意思是只有类对象(即类实例)和子类对象自己能访问到这些变量,需通过类提供的接口进行访问:不能用'from module import *'

Python中内置类型和定义了__nonzero__的魔术方法的类都能在if语句中呗解释为True或False

1 >>> a =[1,2,3] 2 >>> if a: 3 print('I found something') 4 5 6 I found something 7 >>> b = [] 8 >>> if not b: 9 print('Empty') 10 11 12 Empty 13 >>> b = [] 14 >>> if b: 15 print('Empty') 16 17 18 >