年年有"余"

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1642|回复: 0

PHP类中几个常用的魔术方法作用与实现

[复制链接]
  • TA的每日心情
    奋斗
    2022-12-13 21:26
  • 签到天数: 371 天

    [LV.9]以坛为家II

    发表于 2016-1-1 16:14:54 | 显示全部楼层 |阅读模式
    [PHP] 纯文本查看 复制代码
    <?php	
    	
    	$str = file_get_contents("sian.txt");
    	$sian = unserialize($str);
    	echo $sian->age;
    	
    	class Person{
    		public $name, $age, $sex;
    		
    		function __construct($name, $age, $sex){
    			$this->name = $name;
    			$this->age = $age;
    			$this->sex = $sex;
    		}
    		// 克隆魔术方法,$this代表副本
    		// 通过克隆的对象在该方法中修改属性值
    		function __clone(){
    			$this->name = "Sian1";
    		}
    		// 反串行化时,对象初始化
    		// 与克隆类似,可在这里修改属性值
    		function __wakeup(){
    			$this->age += 2;
    		}
    		
    		// 调用了不存在的方法时,该方法被调用
    		function __call($method, $argc){
    			echo $method."--";
    			print_r($argc);
    		}
    		
    		// 对象的字符串表示,类似OC中的Description方法
    		function __toString(){
    			return get_class($this)."->".$this->name;
    		}
    		
    		// Sleep串行化成员变量,返回数组,数组元素为成员变量名
    		// 如果不实现则串行化所有成员,为空则不串行任何成员
    		function __sleep(){
    			return array("name");
    		}
    		
    		// 析构方法,对象即将被释放时调用的最后一个方法
    		function __destruct(){
    			echo "释放{$this->name}<br/>";
    		}
    	}

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    手机版|小黑屋|Archiver|iOS开发笔记 ( 湘ICP备14010846号 )

    GMT+8, 2024-5-1 23:08 , Processed in 0.048281 second(s), 21 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表