Blogger Information
Blog 38
fans 0
comment 1
visits 36165
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
类与对象-属性重载
夜澜风的博客
Original
941 people have browsed it

实例

<?php
header("content-type:text/html;charset=utf-8");

// ## 3. 属性重载
// * 重载: 动态的创建属性和方法
// * 当访问未定义或不可见的属性/方法时, 重载方法会自动调用
// * "当访问未定义或不可见", 统称为: "不可访问"
// * PHP中的重载,是通过"魔术方法"实现
// * "魔术方法"是特指客户端不能访问,而只能是系统根据一定条件自动调用
// * 所有重载方法必须声明为: `public`

 class demo{
 	private $name;  //private()受保护的属性或方法
 	private $age;
    protected $country = '中国';   //私有属性或方法

// 	// 魔术方法,前面都是 __开头,两个下划线
 	public function __construct($name,$age){
 		$this->name = $name;
 		$this->age  = $age;
 	}
// 	// 当获取未定义 不可见的属性时,触发。
 	public function __get($name){    //__get()方法:这个方法用来获取私有成员属性值的,有一个参数,参数传入你要获取的成员属性的名称,返回获取的属性值。如果成员属性不封装成私有的,对象本身就不会去自动调用这个方法。
 		if($name == 'country'){
 			echo $this->country;
 		}
 	}
//// 	// 给不可见的属性,进行赋值时,触发。
 	public function __set($name,$value){ //__set()方法:这个方法用来为私有成员属性设置值的,有两个参数,第一个参数为你要为设置值的属性名,第二个参数是要给属性设置的值,没有返回值。(key=>value)
 		if($name == 'country'){
 			if($value == '***'){
 				echo '绝不让***人加入';
 			}
 		}
 	}
//
//// 	// 检测不可见的属性,触发
//// 	// 需要搭配isset函数
 	public function __isset($name){
 		if($name == 'country'){
 			echo '变量存在';
 		}else{
 			echo '变量不存在';
 		}
 	}
// 	// 删除不可见的属性,触发
// 	// 需要搭配unset函数
 	public function __unset($a){
 		if($a == 'country'){
 			unset($this->country);
 			echo '删除成功';
 		}else{
 			echo '无法删除';
 		}
 	}
 	public function info(){
 	    return $this->name.$this->age.$this->country;
    }
}

 $a = new demo('朱老师',90);
 echo $a->country;
 echo $a->info();
// echo '<br>';
  $a->country = '***';
//  echo '<br>';
 isset($a->country);
//  echo '<br>';
 unset($a->country);
//echo '<br>';
//isset($a->country);

运行实例 »

点击 "运行实例" 按钮查看在线实例


Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post