__set() __get() _isset() __unset() 在__unset() 在类中没有事先声明和已经声明过的属性调用unset的区别
<?php
//echo strtr("I Love Mysql, Love PHP", "Mysql","MYSQL");
//$ar = array('Mysql'=>'MYSQL','PHP'=>'php');
//echo strtr("I Love Mysql, Love PHP", $ar); /*
class myClass
{ public static function autoload($className)
{
if(is_file($className.".class.php"))
{
require_once($className.".class.php"); }else{
echo "{$className}类文件不存在!";
} }
}
spl_autoload_register(array('myClass','autoload'));
$User = new User();
echo $User->getUserName();
echo "<BR><BR>";*/ class Base
{
private $UserName; private $Password; public function __get($key)
{
return $this->$key;
} public function __set($key, $val)
{
echo "key=={$key},val=={$val}<BR><BR>";
$this->$key = $val;
} public function __isset($key)
{
echo "<BR>===============call isset=============<BR>";
return isset($this->$key);
} public function __unset($key)
{
echo "<BR>===============call __unset=============<BR>";
unset($this->$key); }
} $base = new Base();
$base->UserName = "xlc";
$base->Password = "888888";
$base->age = 22;
echo "UserName:{$base->UserName}, Password:{$base->Password},age:{$base->age}<BR><BR>"; echo "<BR><h1>age</h1><BR>";
unset($base->age); //直接在类中没有声明的属性,在unset时,并不会调用魔术方法__unset()
if(isset($base->age)) //但__isset()是进行调用的
{
echo "存在";
}else{
echo "不存在";
}
echo "<BR>=======================<BR>"; echo "<BR><h1>Password</h1><BR>";
unset($base->Password);
if(isset($base->Password)) //如果在类中定义了该属性,这里会调用两次__isset();
{
echo "存在";
}else{
echo "不存在";
} echo "<BR><h1>UserName</h1><BR>";
unset($base->UserName);
if(isset($base->UserName))
{
echo "存在";
}else{
echo "不存在";
}
echo "<BR>=======================<BR>"; //echo isset($base->$name) ? "property is setted.<br>" : "property is not setted.<br>";
/*$key = "Userame";
//当属性已经存在的情况下就不走__isset()了这是为何?
//这里只有在$key为该对像已经定义的属性时才会调用__isset()魔术方法
if(isset($base->$key))
{
echo "属性存在";
}else{
echo "属性不存在";
}*/ ?>
__set() __get() _isset() __unset() 在__unset() 在类中没有事先声明和已经声明过的属性调用unset的区别的更多相关文章
- C++ —— 非类中使用const定义常量的初始化,以及#define和typedef的区别
总结一下在非类中使用const关键字定义常量时的初始化问题,亲测VS2015.顺便记录#define宏和typedef的区别. 1 首先对const声明的常量的初始化做简单小结: , w2 = , w ...
- 第8.9节 Python类中内置的查看直接父类的__bases__属性
终于介绍完了__init__方法和__new__方法,接下来轻松一下,本节介绍类中内置的__bases__属性. 一. 语法释义 Python 为所有类都提供了一个 bases 属性,通过该属性可以查 ...
- Swift类中如何创建一个对外只读对内可读写的属性
很简单用private修饰符,后面跟限制关键字set: class Day{ private(set) var rawValue:Int = 0 func showRawValue(){ print( ...
- 解析C#类中的构造函数
<解析C#类中的构造函数> 一. C#中的构造函数概述: C#中类包含数据成员和函数成员.函数成员提供了操作类中数据的某些功能,包括方法.属性.构造器和终结器.运算符和索引器. 构造函数 ...
- PHP面向对象学习五 类中接口的应用
类中接口的应用 接口:一种成员属性全部为抽象的特殊抽象类,在程序中同为规范的作用 抽象类:1.类中至少有一个抽象方法.2.方法前需要加abstract 接口: 1.类中全部为抽象方法,抽象方法前不 ...
- Abstract和Virtual和interface , 派生类中重写 override / new关键字
http://www.cnblogs.com/blsong/archive/2010/08/12/1798064.html C#中Abstract和Virtual 在C#的学习中,容易混淆virtua ...
- org.apache.commons.lang3.StringUtils类中isBlank和isEmpty方法的区别
相信很多java程序员在写代码的时候遇到判断某字符串是否为空的时候会用到StringUtils类中isBlank和isEmpty方法,这两个方法到底有什么区别呢?我们用一段代码来阐述这个区别吧: @T ...
- 关于Test类中不能使用Autowired注入bean的问题
在测试类中使用AutoWired注解一直不能获取到Bean,调用方法时一直报空指针异常,我有在其他类中使用AutoWired试了下,发现能够生效.问题应该就是处在Test类中,后面找了半天终于找到问题 ...
- python---Django中模型类中Meta元对象了解
Django中模型类中Meta元对象了解 1.使用python manage.py shell 进入编辑命令行模式,可以直接进入项目(为我们配置好了环境) python manage.py shell ...
随机推荐
- Newtonsoft.Json高级用法DataContractJsonSerializer,JavaScriptSerializer 和 Json.NET即Newtonsoft.Json datatable,dataset,modle,序列化
原文地址:https://www.cnblogs.com/yanweidie/p/4605212.html Newtonsoft.Json介绍 在做开发的时候,很多数据交换都是以json格式传输的.而 ...
- Sicily 1388. Quicksum
http://soj.me/1388 又一道字符串的水题.... #include <iostream> #include <cstring> using namespace ...
- (使用STL中的数据结构进行编程7.3.15)UVA 630 Anagrams (II)(求一个单词在字典中出现的次数)
/* * UVA_630.cpp * * Created on: 2013年11月4日 * Author: Administrator */ #include <iostream> #in ...
- [leetcode]Surrounded Regions @ Python
原题地址:https://oj.leetcode.com/problems/surrounded-regions/ 题意: Given a 2D board containing 'X' and 'O ...
- Pascal's Triangle II Leetcode java
题目: Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3, Return ...
- python 机器学习多项式回归
现实世界的曲线关系都是通过增加多项式实现的,现在解决多项式回归问题 住房价格样本 样本图像 import matplotlib.font_manager as fm import matplotlib ...
- linux服务器上面部署ShowDoc 安装Composer
1.安装Composer Composer 是 PHP 的一个依赖管理工具,功能上类似于Java 的 Maven,Python 的 pip,Ruby的 gem,Nodejs 的 npm.详细介绍可参考 ...
- TextEdit 只能输入数字(0-9)的限制
MaskType="RegEx" MaskUseAsDisplayFormat="True" Mask="[0-9]*" <dxe:T ...
- tomcat7部署多个web应用不同编码,端口
1个tomcat部署多个web应用可以设置不同编码,端口,server.xml配置如下: <?xml version='1.0' encoding='utf-8'?><Server ...
- jQuery 用each后添加click
mydd = $('.plist'); mydd.each(function(i){ $(this).click(function(){ mydl.eq(i).hide("slow" ...