魔术方法

魔术方法:系统在特定时机自动调用的方法

常用魔术方法:

1. __get 

        触发时机:对象在外部访问私有成员或者受保护属性时调用

        参数:参数就是属性名

2.__set

        触发时机:对象在外部设置私有成员或者受保护属性值时调用

        参数:属性名和属性值

3.__unset

        触发时机:对象在外部销毁私有成员或者受保护属性时调用

        参数:属性名

4.__isset    

        触发时机:对象在外部判断私有成员或者受保护属性时调用

        参数:属性名

5.__construct

        触发时机:在创建对象时调用

6.__destruct

        触发时机:在销毁对象时调用

7.__toString

        触发时机:echo 一个对象时触发

8.__debugInfo

        触发时机:var_dump一个对象时触发,需返回一个数组

9.__call

        触发时机:调用一个不存在的对象方法时触发

        参数:函数名和参数数组

10.__callStatic

        触发时机:调用一个不存在的静态方法时触发

        参数:函数名和参数数组

11.__sleep

        触发时机:在序列化一个对象时使用

        返回值:数组,数组写想要序列的成员和属性

12.__wakeup

        触发时机:在反序列化一个对象时使用

        反序列化成功以后,想执行一些初始化方法,可以写到这个函数中

13.__clone

        触发时机:在克隆一个对象时使用

        在这里面可以对克隆出来的对象的属性做一些操作

14.__autoload(唯一写在类外的魔术方法)

        触发时机:new一个对象时,当前脚本没有这个类,就会触发这个方法

        参数:该类名的字符串

<?php
	class Person{
		public $name = '小梅';
		protected $sex = '女';
		private $age = 18;
		
		public function __get($pro){
			/*if($pro=='sex'){
				return $this->sex;
			}else if($pro=='age'){
				return $this->age;
			}*/
			return $this->$pro;
		}
		
		public function __set($pro,$val){
			/*if($pro=='sex'){
				$this->sex = $val;
			}else if($pro=='age'){
				$this->age = $val;
			}*/
			$this->$pro = $val;
		}
		
		public function __unset($pro){
			unset($this->$pro);
		}
		
		public function __isset($pro){
			return isset($this->$pro);
		}
		
		public function __toString(){
			return '个人信息,name:'.$this->name;
		}
		
		public function __debugInfo(){
			return ['age','name'];
		}
		
		public function __call($name,$params){
			var_dump($name,$params);
		}
		
		public function __sleep(){
			return ['name','age'];
		}
		
		public function __wakeup(){
			$this->name = 'pan';
		}
		
		public function __clone(){
			echo '<br/>克隆对象中<br/>';
		}
	}
	
	function __autoload($className){
		echo $className.'该类不存在-----';
	}

	$mei = new Person();
	echo $mei->name;
	$mei->age = 20;
	echo $mei->age;
	echo '<br/>';
	echo $mei;
	$mei->demo(2,3,'ui');
	$str = serialize($mei);
	echo $str;
	$obj = unserialize($str);
	echo $obj;
	$mei2 = clone $mei;
	
	$dog = new Dog();
?>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值