__set() __get() _isset() __unset() 在__unset() 在类中没有事先声明和已经声明过的属性调用unset的区别
2013-06-23 11:37
120 查看
<?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 "属性不存在"; }*/ ?>
相关文章推荐
- php面向对象基础概念(属性重载的魔术方法)__get(),__set(),__isset(),__unset()
- PHP __set() __get() __isset() __unset() 四个方法的应用
- __set(),__get(),__isset(),__unset()方法的使用
- php __set() __get() __isset() __unset()四个方法的应用
- PHP面向对象(OOP)编程完全教程:10.__set(),__get(),__isset(),__unset()四个方法的应用
- .NET中公共变量与属性的区别(get/set)
- 【转】PHP5 面向对象Magic Methods to Set/Get Class Properties:__get() __set() __isset() __unset isset() unset()
- PHP中的魔术方法:__construct, __destruct , __call,__get, __set, __isset, __unset , __toString, __set,__clone and __autoload
- [工作点滴]属性没有 set/get方法
- PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toStr
- __set(),__get(),__isset(),__unset()四个方法的应用
- PHP 魔术方法之__set__get__unset__isset
- 详解PHP的__set()、__get()、__isset()、unset()四个方法
- 深入了解隐式属性和带实现值属性的区别(属性中get{},set{}访问器小解)
- php面向对象之-魔术方法__set__get__unset__isset的使用-126
- php __set __get __isset __unset用法防被忽悠分析
- 用@property声明的成员属性_xx在重写了get方法以后,再重写set方法,get会报错,提示_xx不存在。困扰已久,望解答
- PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep
- 【PHP面向对象(OOP)编程入门教程】10.__set(),__get(),__isset(),__unset()四个方法的应用
- PHP 对象 魔术方法 __get __set __isset __unset