__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();
__unset()魔术方法 删除类内私有属性的更多相关文章
- 访问类的私有属性(RTTI和模仿类2种方法)
如何访问类的私有属性? 下面以 TPathData 为例,它有一个私有属性 PathData,储存了每一个曲线点,但一般无法修改它,需要利用下面方法,才能访问修改(若有更好的方法,歡迎分享): 一.利 ...
- python 类的私有属性和方法 (转载)
转载:http://www.runoob.com/python/python-object.html 类属性与方法 类的私有属性 __private_attrs:两个下划线开头,声明该属性为私有,不能 ...
- __get().__set.__isset,__unset魔术方法
一般来说,总是把类的属性定义为 private .这更符合现实的逻辑. 但是对属性的读取和赋值操作非常频繁的,因此在PHP中,预定义了两魔术方法 "__get()"用来获取私有成员属性值的,只有一个参 ...
- Java使用PropertyDescriptor获取实体类中私有属性的值,并给私有属性赋值
大家都知道Java类中的私有的(private)属性是获取不到的(即使使用继承依然获取不到),那如果非要获取私有属性的值怎么办呢?一般的做法是将该java类封装称为一个JavaBean,即封装该私有属 ...
- Python类的私有属性
class Bar(object): __age = 18 sex = 'male' def __init__(self, ): pass def f(self): print(self.__age) ...
- python 基础 5.4 类的私有属性和私有方法
一. 类的私有变量和私有方法 1> 在python 中可以通过在属性变量名前,加上双下划线定义属性为私有属性 2>特殊变量命名 a. _xx 以单下划线开头的表示的是protect ...
- Python 类的私有属性与私有方法
1.隐藏的使用场景 在Python类中,有些属性和方法只希望在对象的内部被使用,而不希望在外部被访问到, 2.定义方式, 在属性名或方法名前增加两个下划线,定义的就是私有属性或方法 #其实这仅仅这是一 ...
- CSIC_716_20191127【组合,封装、类的私有属性方法、property装饰器】
组合 what? 组合是指一个对象中,包含另一个或多个对象. why? 减少代码的冗余. How? 在类中加入其他类的对象,实现跨类对象之间的联动. 耦合度 软件设计要 高内聚 ...
- Python_类的私有属性、私有方法
1.私有属性:只需要在初始化时,在属性名前加__ class Cup: #构造函数,初始化属性值 def __init__(self,capacity,color): #私有属性,只需要在属性名字前加 ...
随机推荐
- div border-radius画圆
不要指定border-width属性: <html> <style type="text/css"> div{ border-style: solid; b ...
- fzu 2135 数字游戏 【水题】
Problem 2135 数字游戏 Accept: 253 Submit: 392Time Limit: 1000 mSec Memory Limit : 32768 KB Problem ...
- Android 开发60条技术经验总结(转)
Android 开发60条技术经验总结: 1. 全部Activity可继承自BaseActivity,便于统一风格与处理公共事件,构建对话框统一构建器的建立,万一需要整体变动,一处修改到处有效. 2. ...
- Linux无处不在
Linux is Everywhere从政府.教育.商业和非盈利组织.科研机构几个方面展示了现在都有哪些地方用了Linux.
- IOS开发之网络开发工具
IOS开发之网络开发工具 做移动端开发 常常会涉及到几个模块:1.网络检測 2.网络请求get和post请求 3.文件上传 4.文件下载 5.断点续传 如今将这些一一分享给大家 ,也欢迎 ...
- [TypeScript] Loading Compiled TypeScript Files in Browser with SystemJS
TypeScript outputs JavaScript, but what are you supposed to do with it? This lesson shows how to tak ...
- HttpServlet请求重定向
方法一: public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcep ...
- yo bootstrap mui 使用对比
昨天晚上 又被问及职业发展方向,提及我的老本行css,切了几年的页面,近两年投入进css的时间屈指可数,被问及之前公司用的yo框架 对比业界内其他css 框架的优势. 1. yo模块化,碎片化 可自 ...
- 使用Android Studio时so文件打包不到APK中
1,需要在build中添加如下配置,这是必备的 Android { sourceSets { main { jniLibs.srcDirs = ['libs'] ...
- JDBC、Hibernate、Mybaites处理数据的流程及对DAO的理解
以查询一个用户信息(id,name)为例: JDBC 1. 获取一个connection 2. 生成一个statement 3. 拼接SQL语句 4. 查询对象,获取结果集(假设已经找到我们需要的对象 ...