将心比心,方得人心~

通过__set()和__get()设置和获取私有字段

周洲 2017-04-06 21:11:40

通过__set()和__get()设置和获取私有字段

私有字段:只有类内可以访问

<?php

	class Computer {
		
		private $_name;
		private $_model;
		private $_cpu;
		
		//当类外的对象直接调用私有字段时,会跟着去检查是否有拦截器,
		//如果直接对$_name进行赋值,那么__set()方法就会拦截住,就不会报错了。
		
		
		//采用拦截器进行赋值和取值

		//赋值
		private function __set($_key,$_value) {
			//那么$_key = '_name',那么$_value = '联想';
			//$this->_name = '联想'
			//那么$_key = '_cpu',那么$_value = '四核'
			//$this->_cpu = '四核'
			//那么$_key = '_model',那么$_value = 'i7'
			//$this->_model = 'i7'
			$this->$_key = $_value;
		}
		
		//取值
		private function __get($_key) {
			return $this->$_key;
			//如果$_key = '_name' 那么$this->_name;
			//如果$_key = '_cpu' 那么$this->_cpu;
			//如果$_key = '_model' 那么$this->_model;
		}
		
	}
	
	
	$computer = new Computer();
	$computer->_name = '联想';
	$computer->_cpu = '四核';
	$computer->_model = 'i7';
	
	echo $computer->_name;
	echo $computer->_cpu;
	echo $computer->_model;

?>
		//__set()和__get()方法私有了,还是可以执行,是因为
		//因为目前程序的指针已经在类内了。而类内可以执行封装的方法
		//类内执行私有方法,不会出现任何错误。
		//它只需要间接的拦截就可以了。拦截是在内类执行的。
		
		//说白了,__set()和__get()是PHP内置的方法,具有一定的特殊性


打赏

『微信打赏』

Tag标签php 

我是有底线的