zoukankan      html  css  js  c++  java
  • [PHP] 魔术方法__get __set __sleep __wakeup的实际使用

    1.__get __set是在给不可访问属性赋值和读取时,调用

    2.__sleep 是在序列化对象的时候调用

    3.__wakeup是在反序列化对象的时候调用

    4.可以在序列化对象的时候 , 只序列化指定的属性 , 减少序列化后的大小, 要把这个对象字符串存储在比如memcache的时候 ,比较有用

     5.比如下面的例子 , 我只序列化了data属性 , 在__sleep函数里进行限制

    <?php
    class Test{
    	public $name;
    	protected $data=array();
    	public function __set($name,$value){
    		$this->data[$name]=$value;
    	}
    	public function __get($name){
    		if(!isset($this->data[$name])){
    			return "";
    		}
    		return $this->data[$name];
    	}
    	public function __sleep(){
    		echo "sleep...
    ";
    		return array('data');
    	}
    	public function __wakeup(){
    		echo "wakeup...
    ";
    	}
    }
    $test=new Test();
    $test->name="我不会被序列化进去";
    $test->bbbb="taoshihan";
    
    
    $testObjectStr=serialize($test);
    var_dump($testObjectStr);
    var_dump(unserialize($testObjectStr));
    

      

  • 相关阅读:
    moment.js相关知识总结
    git相关使用解释
    .我的第一篇博客
    QT项目配置
    重载->
    内核对象同步
    模式对话框与非模式对话框
    显示与隐式类型转换
    size_t与size_type
    系统级源代码:系统裁剪
  • 原文地址:https://www.cnblogs.com/taoshihan/p/10532058.html
Copyright © 2011-2022 走看看