魔术方法
__construct 构造函数
__destruct 析构函数
__call
__callStatic
__get
__set
__isset
__unset
__sleep
__wakeup
__toString
__set_state
__clone (对象在对克隆前调用)
说明
1). 魔术方法都是系统提供;
2).所有的魔术函数都是 __开头;
3).我们定义的函数不要用__开头;
4).魔术方法是满足某个条件时候,系统自动调用;
1. 访问控制修饰符的基本入门介绍;
__get: 是在获取保护属性的时候调用;
__set: 实在设置保护属性时候调用;
代码:
<?php
header("content-type:text/html;charset=utf-8");
class People{
public $name;
protected $sex;
private $age;
public function __construct($name,$sex,$age){
$this->name=$name;
$this->sex = $sex;
$this->age = $age;
}
public function print_info(){
echo $this->name.$this->sex.$this->age;
}
# __get 写法
public function __get($proper_name){
if(property_exists($this,$proper_name)){
return $this->$proper_name;
}else{
return "没有这个保护属性";
}
}
#__set 写法
public function __set($proper_name, $value){
if(property_exists($this,$proper_name)){
$this->$proper_name = $value;
}else{
return "没这个保护属性";
}
}
}
$gx = new people("ganxue","女","12岁");
//$gx->print_info();
#-----------------------------------------------------
# 没有做__get 时候 $gx 对象不能获取保护的属性
# 没有做__set 时候 $gx 对象不能设置保护属性的值
echo $gx->age;
echo $gx->sex;
$gx->name = "yhw";
echo $gx->name;
$gx->sex = "男";
echo $gx->sex;
__isset, __unset函数
基本介绍:
1):当对不可访问的属性进行isset()的时候进行触发__isset,对不可访问的属性进行销毁的时候触发__unset函数
isset,empty;
isset:变量不存在 或者变量不存在 时候返回false;
empty:判断变量是否为空,或者为0 如果是 那么返回true;
//1:变量没有设置过 则为空返回true;
bool empty ( mixed var ) 如果 var 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。 除了当变量没有置值时不产生警告之外,empty() 是 (boolean) var 的反义词。参见转换为布尔值获取更多信息。 |