<?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的区别的更多相关文章

  1. C++ —— 非类中使用const定义常量的初始化,以及#define和typedef的区别

    总结一下在非类中使用const关键字定义常量时的初始化问题,亲测VS2015.顺便记录#define宏和typedef的区别. 1 首先对const声明的常量的初始化做简单小结: , w2 = , w ...

  2. 第8.9节 Python类中内置的查看直接父类的__bases__属性

    终于介绍完了__init__方法和__new__方法,接下来轻松一下,本节介绍类中内置的__bases__属性. 一. 语法释义 Python 为所有类都提供了一个 bases 属性,通过该属性可以查 ...

  3. Swift类中如何创建一个对外只读对内可读写的属性

    很简单用private修饰符,后面跟限制关键字set: class Day{ private(set) var rawValue:Int = 0 func showRawValue(){ print( ...

  4. 解析C#类中的构造函数

    <解析C#类中的构造函数> 一.  C#中的构造函数概述: C#中类包含数据成员和函数成员.函数成员提供了操作类中数据的某些功能,包括方法.属性.构造器和终结器.运算符和索引器. 构造函数 ...

  5. PHP面向对象学习五 类中接口的应用

    类中接口的应用 接口:一种成员属性全部为抽象的特殊抽象类,在程序中同为规范的作用   抽象类:1.类中至少有一个抽象方法.2.方法前需要加abstract 接口: 1.类中全部为抽象方法,抽象方法前不 ...

  6. Abstract和Virtual和interface , 派生类中重写 override / new关键字

    http://www.cnblogs.com/blsong/archive/2010/08/12/1798064.html C#中Abstract和Virtual 在C#的学习中,容易混淆virtua ...

  7. org.apache.commons.lang3.StringUtils类中isBlank和isEmpty方法的区别

    相信很多java程序员在写代码的时候遇到判断某字符串是否为空的时候会用到StringUtils类中isBlank和isEmpty方法,这两个方法到底有什么区别呢?我们用一段代码来阐述这个区别吧: @T ...

  8. 关于Test类中不能使用Autowired注入bean的问题

    在测试类中使用AutoWired注解一直不能获取到Bean,调用方法时一直报空指针异常,我有在其他类中使用AutoWired试了下,发现能够生效.问题应该就是处在Test类中,后面找了半天终于找到问题 ...

  9. python---Django中模型类中Meta元对象了解

    Django中模型类中Meta元对象了解 1.使用python manage.py shell 进入编辑命令行模式,可以直接进入项目(为我们配置好了环境) python manage.py shell ...

随机推荐

  1. 启明星手机版安卓android会议室预定系统 V1.0发布

    启明星手机版会议室预定系统 V1.0发布 在手机里输入 http://www.dotnetcms.org/e4.apk 或者扫描二维码下载 用户打开系统,可以实时查看所有会议室状态 点击会议室名称,可 ...

  2. warning: LF will be replaced by CRLF in dubbo-demo-api/pom.xml.

    今天使用git add .的时候出现了一个错误. 错误如下: 解决方案: $ rm -rf .git // 删除.git $ git config --global core.autocrlf fal ...

  3. 细思极恐-你真的会写java吗?

    导语 自2013年毕业后,今年已经是我工作的第4个年头了,总在做java相关的工作,终于有时间坐下来,写一篇关于java写法的一篇文章,来探讨一下如果你真的是一个java程序员,那你真的会写java吗 ...

  4. JavaScript 覆盖document.createElement 方法

    最近项目遇到了问题,有个asp.net web程序只能在IE7 运行,现在xp都淘汰了,大家都用IE8-IE11,因此这个web app也需要升级 适应所有IE版本.照成IE版本不兼容的问题主要来致d ...

  5. 领扣-5 最长回文子串 Longest Palindromic Substring MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  6. Android 第三方加固方案 对比 MD

    常见的第三方加固方案官网介绍 由于安卓APP是基于Java的,所以极容易被破解,一个不经过加固的APP犹如裸奔一样,毫无防备.之前曾有新闻报道,一些专职的APP打包黑产就是专门从各种渠道找到apk,通 ...

  7. distinct 多列详解

    1.distinct单列 select distinct(a) from tableA; 2.distinct多列 select distinct a,b,c from tableA; 注意此时是将a ...

  8. ML、DL相关资源

    1. http://x-algo.cn/index.php/category/nlp/

  9. NLP常用信息资源

    ACL Anthology,囊括了ACL,EMNLP,CL等NLP领域重要会议和期刊的论文.http://www.aclweb.org/anthology-new/ LDC: The Linguist ...

  10. 解决ThinkPHP的Create方法失效而没有提示错误信息的问题

    ThinkPHP中的数据创建Create方法是一个非常有用的功能,它自动根据表单数据创建数据对象(在表字段很多的情况下尤其明显) 但有时候该方法可能并未按照你期望的来工作,比如方法不工作而且还没有提示 ...