PHP OOP---魔术方法

魔术方法

   __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"、NULLFALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE

除了当变量没有置值时不产生警告之外,empty() 是 (boolean) var 的反义词。参见转换为布尔值获取更多信息。

    

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值