码迷,mamicode.com
首页 > 其他好文 > 详细

魔术方法__get()和set函数

时间:2018-06-07 22:55:38      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:prot   直接   形式   php   char   class   访问   ext   name   

基本介绍

 

1.当去使用可访问的属性时,系统就会调用__get方法    不可访问属性:该属性不存在   直接访问protected或private属性

2.当去给不可访问属性赋值时,会调用__set方法

<?php
header(‘content-type:text/html;charset=utf-8‘);
class human{
	public $name;
	protected $food;
	function __construct($name,$food){
		$this->name=$name;
		$this->food=$food;
	}
	//魔术方法
	//魔术方法名字是固定的系统提供
	//$pro_name 
	public function __get($pro_name){
		if(property_exists($this,$pro_name)){
			return $this->$pro_name;
		}
		else{
			return "没有该属性";
		}
	}
}
$wd= new human(‘温蛋‘,‘鸡‘);
echo "<br> 名字是".$wd->name;
echo "<br> 食物是".$wd->food;

 

<?php
header(‘content-type:text/html;charset=utf-8‘);
class human{
	public $name;
	protected $food;
	function __construct($name,$food){
		$this->name=$name;
		$this->food=$food;
	}
	//魔术方法
	//魔术方法名字是固定的系统提供
	//$pro_name 是形式参数,表示属性名
	public function __get($pro_name){
		
		if(property_exists($this,$pro_name)){
			return $this->$pro_name;
		}
		else{
			return "没有该属性";
		}
	}
	//魔术方法
	//魔术方法名字是固定的系统提供
	//$pro_name 是形式参数,表示属性名 $pro_val是属性值
	public function __set($pro_name,$pro_val){
//		echo $pro_name.$pro_val;
		if(property_exists($this,$pro_name)){
			$this->$pro_name=$pro_val;
		}
		else{
				return "没有该属性";
		}
	}
}
$wd= new human(‘温蛋‘,‘鸡‘);
echo "<br> 名字是".$wd->name;
echo "<br> 食物是".$wd->food; 
//修改对象名字和食物
$wd->name="猪";
//在默认情况下,不能直接给一个protected属性赋值,会触发set魔术方法;
$wd->food="猪饲料";
echo "<br />新的值是";
echo "<br> 名字是".$wd->name;
echo "<br> 食物是".$wd->food; 

 

魔术方法__get()和set函数

标签:prot   直接   形式   php   char   class   访问   ext   name   

原文地址:https://www.cnblogs.com/zuichumx0826/p/9152962.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!