zoukankan      html  css  js  c++  java
  • php面向对象魔术方法笔记

    <?php

    //魔术方法

    //__get方法:当程序员去使用不可访问的属性时;系统就会调用__get方法 //不可访问的属性是指:该属性不存在;直接访问了protected或者private属性 //__set方法:当程序员去给不可访问的属性赋值时系统会去调用__set方法 //示例: header('content-type:text/html;charset=utf8'); echo '

    ';
    class Monkey{
    	public $name;
    	protected $food;
    	public function __construct($name,$food){
    		$this->food = $food;
    		$this->name = $name;
    	}
    //	魔术方法__get
    //	__get和后面的pro_name形参为固定的不可更改
    //	通过__get取出protected或者private里面的
    	public function __get($pro_name){
    		echo '
    pro_name:'.$pro_name; // 写法如下 // 通过property_exists()方法用于检测有无此属性 if(property_exists($this,$pro_name)){ return $this->$pro_name; }else{ return '没有这个属性无法返回!'; } } // __set魔术方法改变受保护属性值 public function __set($pro_name,$pro_val){ echo '
    '.$pro_name; echo '
    '.$pro_val; // 通过property_exists()方法用于检测有无此属性 if(property_exists($this,$pro_name)){ $this->$pro_name = $pro_val; }else{ return '没有这个属性无法修改!'; } } } //创建一个monkey1 $monkey1 = new Monkey('孙悟空','蟠桃','30'); echo '
    猴子的名字是:'.$monkey1->name; //如果想直接取出protected和private里面的 echo '
    猴子的食物是:'.$monkey1->food; //__set魔术方法 //修改猴子的食物和名字 $monkey1->name = '野猴子'; $monkey1->food = '苹果'; var_dump($monkey1); //__isset和__unset魔术方法 //当对不可访问的属性进行了isset($对象名->属性名)或者empty($对象名->属性)操作;那么__isset函数就会被调用 //当对不可访问的属性进行了unset($对象名->属性名)那么__unset函数就会被调用 //unset是直接销毁的变量 //案例: echo '
    '; class Cat{ public $name; private $food; public function __construct($name,$food){ $this->food = $food; $this->name = $name; } // 执行__set魔术方法将避免下面的age成员属性的重载;如果不添加这个魔术方法age属性将会被动态的添加给$cat对象 public function __set($pro_name,$pro_val){ } } $cat1 = new Cat('张三','鸡肉'); var_dump($cat1); $cat1 ->age = '20'; var_dump($cat1);
    页面输出:

    
    
  • 相关阅读:
    任务45:Identity MVC:注册逻辑实现
    任务44:Identity MVC: EF + Identity实现
    Identity MVC:UI
    任务42:EF Core Migration
    任务41:Individual authentication 模板
    任务40:介绍
    任务39:Role以及Claims授权
    postman中 form-data、x-www-form-urlencoded、raw、binary的区别
    任务38:JWT 设计解析及定制
    任务37:生成 JWT Token
  • 原文地址:https://www.cnblogs.com/lxc-bky/p/9817463.html
Copyright © 2011-2022 走看看